Elasticsearch bool必须仅在文档中存在字段时

时间:2016-06-24 11:10:41

标签: elasticsearch

如果发布日期是将来,我想过滤我的文档,并且我用

执行此操作
{
"size": 8,
"query": {
    "filtered": {
        "filter": {
            "bool": {
                "must": [{
                    "range": {
                        "meta.publish_date.date": {
                            "lte": "now"
                        }
                    }
                }]
            }
        }
    }
},
"from": 0
}

我现在的问题是它只找到包含字段" publish_date'的文档。并且过去了。但我也想找到所有没有这个领域的文件。

如何进行此类查询?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您还可以在回复中包含没有日期字段的文档,如下所示:

{
  "from": 0,
  "size": 8,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "minimum_should_match": 1,
          "should": [
            {
              "range": {
                "meta.publish_date.date": {
                  "lte": "now"
                }
              }
            },
            {
              "missing": {
                "field": "meta.publish_date.date"
              }
            }
          ]
        }
      }
    }
  }
}