原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-exists-query.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl-exists-query.html

exists 查询

返回包含一个字段索引值的文档。

由于各种原因,文档的字段可能不存在索引值:

  • 源 JSON 中的字段为 null[]
  • 字段在映射中有 "index" : false 的设置
  • 字段值的长度超过了映射中的 ignore_above 设置
  • 字段值格式不正确,并且在映射中定义了 ignore_malformed

请求示例

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

exists的顶级参数

field

(必须, string) 你想要搜索的字段的名称。

如果 JSON 值为 null[],则字段被视为不存在,而下面这些值将表明该字段确实存在:

  • 空字符串,比如 """-"
  • 数组中包含 null 和其他值,比如 [null, "foo"]
  • 字段映射中的自定义的 null-value

注意

查找缺少索引值的文档

要查找缺少字段索引值的文档,请使用 must_not 布尔查询exists 查询。

下面这个搜索返回缺少 user 字段索引值的文档。

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