在使用 es 时,我们经常需要获取指定字段存在值的对应文档(document),es 提供了属于 term 类查询的 exists
查询来满足该需求。
字段值存在的定义
首先,我们要明确哪些情况认为是字段值不存在的,具体如下:
{ "tag" : null }
虽然有 tag 字段,但是值为空。{ "tag" : [] }
虽然有 tag 字段,但是值为空数组。{ "tag" : [null] }
虽然有 tag 字段,但是数组值为空。{ "content" : "knowledgedict" }
没有 tag 字段。
字段值为空字符串的认为是字段值存在的。
解决方法
GET article/_search
{
"query": {
"exists": {
"field": "tag"
}
}
}