В поиске эластичности у нас есть документ с различными значениями. Каждое значение имеет период. Период указывает, является ли значение по-прежнему актуальным, и указывает, в какое время это значение актуально.Elastic Search - значение фильтра по последней дате
Пример ниже:
"": [
{
"memberType": user,
"period": {
"validFrom": "1964-08-23",
"validTo": "2008-12-31"
},
},
{
"memberType": admin,
"period": {
"validFrom": "2008-12-31",
"validTo": null
}
}
]
В нашем запросе, я хочу, чтобы фильтровать по MemberType. Но иметь дело только с новейшим типом члена. Поэтому, если я фильтрую пользователем userType «пользователь», вышеприведенный документ не должен совпадать, потому что фактическим типом member является admin.
В приведенном выше примере, я мог бы фильтровать с булевым фильтром memberType, а отсутствует поле в поле validTo.
Но если человек еще недействителен дольше, у обоих будет действительная дата, определенная, и тогда я должен посмотреть на самую новую дату.
Как я могу это достичь? Я думаю о вложенном запросе или о специальном скрипт-фильтре. Но я не знаю, как выразить запрос.
Заранее спасибо
Thanks Vishal. Но ваш ответ не является полным. Данный пример возвращает только, если поле «validTo» отсутствует. Но во всех случаях это поле отсутствует, в некоторых случаях значение validTo будет иметь значение даты, и мне нужно найти самую новую дату. Пример .: "": [ { "MemberType": пользователь, "Период": { "validFrom": "1964-08-23", "validTo": "2008-12-31" }, }, { "MemberType": администратор, "период": { "validFrom": "2008-12-31", "validTo": "2012-04-30" }} ] –