Я пытаюсь создать булев фильтр в ElasticSearch, который проверяет start_date
и end_date
по сравнению с сегодня. Если start_date
или end_date
равно null, результат должен быть возвращен.Elasticsearch - Bool фильтр диапазон дат или поле может быть NUL
Так, например, сегодня 2016-08-09.
- Пункт 1: start_date: 2016-08-04 end_date: 2016-08-08 НЕ ДОЛЖНЫ ВЕРНУТЬ
- Пункт 2: start_date: 2016-08-08 end_date: 2016- 08-12 НЕОБХОДИМО ВЕРНУТЬ
- Пункт 3: start_date: нуль end_date: нуль НЕОБХОДИМО ВЕРНУТЬ
Не похоже, чтобы заставить его работать с моим текущим кодом:
POST _search
{
"query":{
"filtered": {
"query": {
"match_all": {}
},
"filter" : {
"bool": {
"must": [{
"range": {
"start_date": {"lte": "2016-08-09"}
}
},
{
"range": {
"end_date": {"gte": "2016-08-09"}
}
}],
"should": [{
"missing": {
"field": "start_date"
}
},
{
"missing": {
"field": "end_date"
}
}]
}
}
}
}
}
Спасибо, Val, это работает! – Paul
Удивительный, рад, что это помогло! – Val