当前位置:首页 » 《随便一记》 » 正文

如何在es中查询null值

11 人参与  2023年01月30日 10:57  分类 : 《随便一记》  评论

点击全文阅读


文章目录

1、背景2、需求3、准备数据3.1 创建mapping3.2 插入数据 4、查询 `name`字段为null的数据5、查询`address`不存在或值直接为null的数据6、参考链接

1、背景

在我们向es中写入数据时,有些时候数据写入到es中的是null,或者没有写入这个字段,那么这个时候在es中该如何查询出这种为null的数据呢?

2、需求

假设我们的mapping存在 如下2个字段nameaddress,其中 namekeyword类型且使用了null_value来处理null值,address字段是text类型。

我们插入数据时,存在nameaddress字段都不存在的,存在nameaddress[]null的数据,我们需要查询出来这些数据。

3、准备数据

3.1 创建mapping

PUT /index_null_value{  "mappings": {    "properties": {      "name":{        "type": "keyword",        "null_value": "--"      },      "address":{        "type": "text"      },      "age":{        "type": "integer",        "null_value": "-1"      }    }  }}

注意:

null_value 需要和字段的 类型值 保持一致,比如上方的ageinteger类型,那么null_value的值就必须是integer类型null_value 不会修改 _source中的值[]空数组是不会被null_value替换的,因为[]中不包含明确的nullnull_value可以修饰的数据类型有限,比如text类型不可使用。
null_value注意事项

3.2 插入数据

PUT /index_null_value/_bulk{"index":{"_id":0}}{"age":10}{"index":{"_id":1}}{"name":null,"address": null,"age":10}{"index":{"_id":2}}{"name":[],"address":[],"age":20}{"index":{"_id":3}}{"name":[null],"address":[null],"age":60}{"index":{"_id":4}}{"name":[null,"123"],"address":[null,"123"],"age":70}{"index":{"_id":5}}{"name":["123",null],"address":["123",null],"age":80}{"index":{"_id":6}}{"name":["123","456"],"address":["123","456"],"age":90}
数据中存在 nameaddress字段都不存在的数据中存在 nameaddress字段 是 [] 的数据中存在 nameaddress字段 是 [null] 的数据中存在 nameaddress字段 都有值的

4、查询 name字段为null的数据

查询name字段为null的数据

5、查询address不存在或值直接为null的数据

查询address不存在或值直接为null的数据
boolean exists

6、参考链接

1、https://www.elastic.co/guide/en/elasticsearch/reference/8.6/null-value.html
2、https://www.elastic.co/guide/en/elasticsearch/reference/8.6/query-dsl-exists-query.html


点击全文阅读


本文链接:http://zhangshiyu.com/post/51824.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1