elasticsearch(es)如何查询指定字段不为空值的结果,空值包含 null 值,对应的 query 语句是什么?
正确答案
es 针对上述用户诉求,提供了 exists query,它属于词项查询类(term query);
在使用 exists query 时,需要明确的是它定义的字段是否存在值的情况有如下几种,假设判断 user 字段不为空值的结果:
-
虽然有 user 字段,但是值为 null 空值;{ "user" : null } -
虽然有 user 字段,但是值为空数组;{ "user" : [] } -
虽然有 user 字段,但是值为 null 空值;{ "user" : [null] } -
没有 user 字段。{ "knowledge" : "dict" }
exists query 语句如下:
{
"query": {
"exists": {
"field": "user"
}
}
}