elasticsearch 在ElasticSearch中,如何检查某个字段是否存在,该字段是否等于某个值,或者该字段是否不';不存在?,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 在ElasticSearch中,如何检查某个字段是否存在,该字段是否等于某个值,或者该字段是否不';不存在?,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 在ElasticSearch中,如何检查某个字段是否存在,该字段是否等于某个值,或者该字段是否不';不存在?

elasticsearch 在ElasticSearch中,如何检查某个字段是否存在,该字段是否等于某个值,或者该字段是否不';不存在?,elasticsearch,kibana,elasticsearch,Kibana,我想在elasticsearch中查找所有文档,其中我的“更新”字段存在且小于某个值,或者该字段在文档中根本不存在。我可以看到,使用bool查询,必须和必须不能被利用,但我如何获得我试图用它们实现的确切场景 谢谢大家! 假设updated是date类型的字段,则查询如下所示: GET test/_search { "query": { "bool": { "should": [ { "bool": { "must

我想在elasticsearch中查找所有文档,其中我的“更新”字段存在且小于某个值,或者该字段在文档中根本不存在。我可以看到,使用bool查询,必须和必须不能被利用,但我如何获得我试图用它们实现的确切场景


谢谢大家!

假设
updated
date
类型的字段,则查询如下所示:

GET test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              {
                "exists": {
                  "field": "updated"
                }
              },
              {
                "range": {
                  "updated": {
                    "lte": "2019-06-10"
                  }
                }
              }
            ]
          }
        },
        {
          "bool": {
            "must_not": [
              {
                "exists": {
                  "field": "updated"
                }
              }
            ]
          }
        }
      ]
    }
  }
}
以上说明:

让,

  • 字段
    已更新
    应存在==>
    A
  • 字段
    updated
    应小于
    X
    ==>
    B
  • 字段
    updated
    不应存在==>
    C
所需条件转换为
(A和B)或C

(A和B)
成为
D

现在就弹性而言,它变成:

should 
{
   D,
   C
} 
或 在上面的查询中,仅使用就足够了,并且不需要检查是否存在更新的字段以及范围

因此,查询可以重写为(B或C):


太棒了,你真漂亮。作为ES的初学者,它对我帮助很大。谢谢
should
{
   must
   {
      A,
      B
   },
   C
}
GET test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "updated": {
              "lte": "2019-06-10"
            }
          }
        },
        {
          "bool": {
            "must_not": [
              {
                "exists": {
                  "field": "updated"
                }
              }
            ]
          }
        }
      ]
    }
  }
}