我正在尝试在ElasticSearch中创建一个 布尔过滤器 ,以检查start_date和end_date与今天进行比较。如果start_date或end_date为null,则仍应返回结果。
start_date
end_date
例如,今天是2016-08-09。
似乎无法使其与我当前的代码配合使用:
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" } }] } } } } }
您可能需要这样的东西,即:
修改后的查询:
POST _search { "query": { "filtered": { "filter": { "bool": { "must": [ { "bool": { "should": [ { "range": { "start_date": { "lte": "now" } } }, { "missing": { "field": "start_date" } } ] } }, { "bool": { "should": [ { "range": { "end_date": { "gte": "now" } } }, { "missing": { "field": "end_date" } } ] } } ] } } } } }