存在查询编辑

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

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

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

示例请求编辑

resp = client.search(
    body={"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)
GET /_search
{
  "query": {
    "exists": {
      "field": "user"
    }
  }
}

exists 的顶级参数编辑

field

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

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

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

注意编辑

查找缺少索引值的文档编辑

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

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

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