在es中查询null值的操作方法
目录
- 1、背景
- 2、需求
- 3、准备数据
- 3.1 创建mapping
- 3.2 插入数据
- 4、查询 name字段为null的数据
- 5、查询address不存在或值直接为null的数据
- 6、参考链接
1、背景
在我们向es中写入数据时,有些时候数据写入到es中的是null,或者没有写入这个字段,那么这个时候在es中该如何查询出这种为null的数据呢?
2、需求
假设我们的mapping存在 如下2个字段name和address,其中 name是keyword类型且使用了null_value来处理null值,address字段是text类型。
我们插入数据时,存在name和address字段都不存在的,存在name和address是[]或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需要和字段的 类型值 保持一致,比如上方的age是integer类型,那么null_value的值就必须是integer类型。null_value不会修改_source中的值[]空数组是不会被null_value替换的,因为[]中不包含明确的nullnull_value可以修饰的数据类型有限,比如text类型不可使用。

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}
- 数据中存在
name和address字段都不存在的 - 数据中存在
name和address字段 是 [] 的 - 数据中存在
name和address字段 是 [null] 的 - 数据中存在
name和address字段 都有值的
4、查询 name字段为null的数据

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


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
到此这篇关于如何在es中查询null值的文章就介绍到这了,更多相关es中查询null值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)
