Elasticsearch 字段为空(null)记录查询
Posted illusioned
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch 字段为空(null)记录查询相关的知识,希望对你有一定的参考价值。
在Elasticsearch 的使用和不断深入中,我们常常会遇到各种各样的问题;
在此,记录下Elasticsearch 字段为空记录查询;
1.查询为空的字段
我们查询某个字段为空的数据时,在mysql中:
select eid,ent_name from ent_search where enttype_code is NULL;
在elasticsearch中,我们使用的api为exists,这个查询是:查询这个字段为空的或者没有这个字段的:
GET ent_search/_search
{
"_source": ["eid","ent_name"],
"query": {
"bool": {
"must_not": {
"exists": {
"field": "enttype_code"
}
}
}
}}
2.查询某个不为空的字段
我们查询某个字段不为空的数据时,在mysql中:
select eid,ent_name from ent_search where enttype_code is NOT NULL;
在elasticsearch中,我们使用的api为exists,这个查询是:
GET ent_search/_search
{
"_source": ["eid","ent_name","enttype_code"],
"query": {
"constant_score": {
"filter": {
"exists": {
"field": "enttype_code"
}
}
}
}}
### 查询例子
sql_example: select msg,level from jsonlog3-2019.06.26 where msg is NULL; es_explain: GET /jsonlog3-2019.06.26/_search { "_source": ["msg","level"], "query": { "bool": { "must": [ {"bool": {"must_not": [ {"exists": {"field": "msg"}} ]}} ] } }} sql_example: select msg,level from jsonlog3-2019.06.26 where msg is not NULL; es_explain: GET /jsonlog3-2019.06.26/_search { "_source": ["msg","level"], "query": { "bool": { "must": [ {"bool": {"must": [ {"exists": {"field": "msg"}} ]}} ] } }} OR GET /qdtech-jsonlog3-2019.06.26/_search { "_source": ["msg","level"], "query": { "constant_score": { "filter": { "exists": { "field": "msg" } } } } } 注:es中字段不存在 和 字段为null 是同一个概念;
以上是关于Elasticsearch 字段为空(null)记录查询的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:如何在 Elasticsearch 中搜索空值
Elasticsearch:如何在 Elasticsearch 中搜索空值
Elasticsearch:如何在 Elasticsearch 中搜索空值
ElasticSearch 将 NULL 值作为空字符串或“N/A”获取