【问题标题】:Combine elasticsearch date range queries with null values将 elasticsearch 日期范围查询与空值相结合
【发布时间】:2016-12-15 00:10:53
【问题描述】:

我想使用如下日期范围查询:

{
    "range" : {
        "deadline" : {
            "gte" : "2016-12-14",
        }
    }
}

我的索引也包含截止日期的空值。我想在搜索结果中获取那些日期为空的文档以及范围内的日期。如何在弹性 5.x 中将日期范围与“must_not”存在查询结合起来

【问题讨论】:

  • 您的意思是在您的日期范围内避免空值?
  • 据我了解,他希望搜索返回日期大于 2016-12-14 或没有与文档关联的截止日期的搜索。

标签: elasticsearch


【解决方案1】:

我认为 bool 查询 可以解决问题。

{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "deadline": {
              "gte": "2016-12-14"
            }
          }
        },
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "deadline"
              }
            }
          }
        }
      ]
    }
  }
}

在 Elasticsearch 索引中,null 值不存在,因此我们使用 exist 查询。使用缺少的查询会不那么冗长,但它是deprecated since 2.2

我没有足够的信息,所以我的示例在 query context 中运行,但也许 filter context 在这种情况下会更方便。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多