Exists 查询

编辑

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

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

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

示例请求

编辑
resp = client.search(
    query={
        "exists": {
            "field": "user"
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      exists: {
        field: 'user'
      }
    }
  }
)
puts response
res, err := es.Search(
	es.Search.WithBody(strings.NewReader(`{
	  "query": {
	    "exists": {
	      "field": "user"
	    }
	  }
	}`)),
	es.Search.WithPretty(),
)
fmt.Println(res, err)
const response = await client.search({
  query: {
    exists: {
      field: "user",
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "exists": {
      "field": "user"
    }
  }
}

exists 的顶层参数

编辑
field

(必需,字符串)要搜索的字段名称。

虽然如果 JSON 值为 null[],则认为该字段不存在,但这些值将表明该字段确实存在

  • 空字符串,例如 """-"
  • 包含 null 和另一个值的数组,例如 [null, "foo"]
  • 自定义的 null-value,在字段映射中定义

注意事项

编辑

查找缺少索引值的文档

编辑

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

以下搜索返回缺少 user.id 字段的索引值的文档。

resp = client.search(
    query={
        "bool": {
            "must_not": {
                "exists": {
                    "field": "user.id"
                }
            }
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      bool: {
        must_not: {
          exists: {
            field: 'user.id'
          }
        }
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    bool: {
      must_not: {
        exists: {
          field: "user.id",
        },
      },
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "user.id"
        }
      }
    }
  }
}