elasticsearch 使用特定规则的Apache Lucene查询

pb3s4cty  于 2023-08-03  发布在  ElasticSearch
关注(0)|答案(1)|浏览(118)

我在Lucene索引中有多个文档,我想根据特定的规则进行查询,换句话说,我想对整个文档进行查询,除了搜索中的一些文档,我想排除的文档包含特定TextField的特定值。
例如。

name: John
bio: bla bla bla 
age: 25

字符串
我想做一个查询,应该在所有文件中搜索,他们没有年龄字段,如果他们有年龄字段,我想在文档中搜索,但与特定的规则,例如年龄应该是更多30

zdwk9cvp

zdwk9cvp1#

下面的查询应该可以帮助您实现这一点。它将检索没有age字段的文档,或者对于具有age字段的文档,只检索age > 30

{
  "query": {
    "bool": {
      "minimum_should_match": 1, 
      "should": [
        {
          "bool": {
            "must_not": [
              {
                "exists": {
                  "field": "age"
                }
              }
            ]
          }
        },
        {
          "range": {
            "age": {
              "gt": 30
            }
          }
        }
      ]
    }
  }
}

字符串
等价的Lucene查询将是:

NOT(_exists_:age) OR age:{30 TO *}

相关问题