我试图使用2个bool应该一起过滤:一个返回包含日期范围内任何event_dates.starts_at
值的对象,例如:
"event_dates": [
{
"starts_at": "2016-12-04T08:00:00+07:00"
},
{
"starts_at": "2016-12-11T08:00:00+07:00"
}
]
(单独工作),另一个允许同时不包含event_dates.starts_at
个字段的对象,例如:
"event_dates": []
(使用缺少的查询,但似乎取消了第一个过滤器的效果,只返回我数据库中的所有内容)
下面是我到目前为止的查询:
{
"query":{
"filtered":{
"filter":{
"and":[
{
"bool":{
"should":[
{
"nested":{
"path":"event_dates",
"filter":{
"range":{
"event_dates.starts_at":{
"gte":"20161125",
"lte":null,
"format":"basic_date"
}
}
}
}
},
{
"missing":{
"field":"event_dates.starts_at"
}
}
]
}
}
]
}
}
}
}
(因为我从较大的查询中提取了这个,所以可能会有一些不必要的位)。有谁知道我在哪里出错?尝试将缺失的过滤器指定为嵌套路径,但无法使其工作...
答案 0 :(得分:0)
试试这个:
{
"query": {
"filtered": {
"filter": {
"and": [
{
"nested": {
"path": "event_dates",
"filter": {
"bool": {
"should": [
{
"range": {
"event_dates.starts_at": {
"gte": "20161125",
"lte": null,
"format": "basic_date"
}
}
},
{
"missing": {
"field": "event_dates.starts_at"
}
}
]
}
}
}
}
]
}
}
}
}