Term-level queries.Exists

57 阅读1分钟

Exists query

source :www.elastic.co/guide/en/el…

path:Elasticsearch.Query DSL.Term-level queries.Exists

搜索field上存在索引值的document。

一个document上的field不存在索引值的情况可能是以下原因:

  • 源JSON上的该field为null[]
  • mapping上设置了"index":false"doc_values:false"
  • field上的值长度超过了ignore_above
  • field的值是malformed ,并且mapping中设置了ignore_malformed

Example request

GET /_search
{
  "query": {
    "exists": {
      "field": "user"
    }
  }
}

Top-level parameters for exists

field

(Required,string)你想要搜索的field

如果JSON 值为null[] 那么这个field被视为不存在,下面这些值被视为是存在的

  • 空字符串,"""-"
  • 包含null和其他值,例如,[null,"foo"]
  • 在field mapping中 定义的自定义null-value

Notes

Find documents missing indexed values

要搜索field上没有索引值的document,请使用带有existsquery的must_not boolean query。

下面的例子会返回user.id field上没有索引值的document

GET /_search
{
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "user.id"
        }
      }
    }
  }
}