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

标签 elasticsearch

如果发布日期是将来的日期,我想过滤我的文档,而我这样做是

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

我现在的问题是,它仅查找过去具有字段“publish_date”的文档。但我也想找到所有没有此字段的文档。

我该如何查询?

提前致谢。

最佳答案

您还可以在响应中包括没有日期字段的文档,如下所示:

{
  "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"
              }
            }
          ]
        }
      }
    }
  }
}

关于elasticsearch - Elasticsearch bool必须仅在文档中存在字段时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38012023/

相关文章:

elasticsearch - 通过 kibana 进行 Elasticsearch 累积和聚合

elasticsearch - 数组中对象(标签)的构面

elasticsearch - elasticsearch聚合(具有子方面的方面)

elasticsearch - Elasticsearch-将存储的脚本安装到文件系统中

Elasticsearch 重新索引竞争条件

mongodb - ElasticSearch 与其他存储结合的典型用法是什么?

date - Elasticsearch 中的日期过滤器

ruby - logstash elasticsearch输出

elasticsearch - Elasticsearch kubernetes 数据盘使用量突然上升

elasticsearch - 当字段包含感叹号时,Elasticsearch 突出显示的文本中缺少文本