如何在es中查询null值
2023-03-20 15:26:26 时间
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
替换的,因为[]
中不包含明确的null
null_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
相关文章
- 漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3 ?
- 别只会搜日志了,求你懂点原理吧
- PyTorch版YOLOv4更新了,适用于自定义数据集
- 没有计算机文凭,我在两个月内搞定4份Offer,且收入翻倍
- 记一次生产事故:30万单就这样没了!
- 为什么不应该在分页中使用offset和limit
- 面试官让我聊聊 ArrayList 解决了数组的哪些问题
- 类脑计算机:一种新型的计算系统
- Uber为什么放弃Postgres选择迁移到MySQL?
- 无需GPT-3!国外小哥徒手开发Text2Code,数据分析代码一键生成
- 什么时候以及为什么基于树的模型可以超过神经网络模型?
- 刚刚!史上超大规模半导体交易诞生:英伟达宣布 400 亿美元收购 Arm
- 计算机世界里的“堆栈”你真的懂吗?
- 量子计算前景一片大好?MIT新研究「泼冷水」| Nature
- 你上世纪写的代码现在还work吗?挑战者:我需要读磁带的机器
- 谷歌实现全球首个量子化学模拟,用量子「计算」出化学反应过程
- 五分钟搞懂布隆过滤器,亿级数据过滤算法值得拥有
- 备战解决方案架构师考试,你需要哪些知识和技能?
- 突破:芯片存储容量提高1000倍
- 10大高性能开发宝石,我要消灭一半程序员!