已解决
es之null_value
来自网友在路上 150850提问 提问时间:2023-10-29 03:39:26阅读次数: 50
最佳答案 问答题库508位专家为你答疑解惑
官方文档
https://www.elastic.co/guide/en/elasticsearch/reference/8.8/null-value.html
什么是null值
在es中, null, [], [null] 这三个值会被当成null值(空值)
null值不能做搜索参数
get /dev-member/_search
{"query":{"term": {"employee_id": null}}
}
会报错:
{"error": {"root_cause": [{"type": "illegal_argument_exception","reason": "field name is null or empty"}],"type": "illegal_argument_exception","reason": "field name is null or empty"},"status": 400
}
原因是es不会为null值建立索引。
使用null_value搜索null值的记录
要想搜索null值文档,就要为null值创建索引。
一个方法是用一个特定值替换掉null值,比如用0来代替员工id不存在,搜索时直接使用特定值去搜索。
另一个方法是使用es提供的null_value功能。
在定义映射的时候指定null_value
"employee_id":{"type":"long","null_value":0
}
注意: null_value的值要和字段数据类型一致。
这样在索引记录的时候,es发现employee_id为null值,就会将这个文档归属到null_value指向的记录集中,本例是0。
但是es不会修改文档的原值, 所以在文档中, employee_id仍然为null值。
搜索的时候,就可以使用null_value值去搜索employe_id为null的文档。
例如:
get /dev-member/_search
{"query":{"term": {"employee_id": 0}}
}
返回的数据中 employee_id为null
{"took": 873,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 1,"hits": [{"_index": "dev-member","_id": "1234","_score": 1,"_source": {"user_id": "1234","employee_id": null}}]}
}
null_value不是指定默认值
一开始,我以为这是个默认值,也被gpt误导了,后面发现根本不是一回事。
如果在索引文档的时候,没有指定某个字段,那这个字段就不会存在文档中,使用null_value搜索是搜索不出来的,这时候要用exists搜索。
总结
- 在映射中可以指定字段的null_value, 当字段的值为null值时,es会使用null_value为此字段创建索引,但不会替换文档中的null值,客户端可以使用null_value搜索文档。
- 如果索引文档的时候,没有包含某字段,那null_value搜索也无法找到此记录,可以使用exists来搜索。
查看全文
99%的人还看了
相似问题
- Office文件在线预览大全-Word文档在线预览的实现方法-OFD文档在线预览-WPS文件在线预览
- 使用wxPython和PyMuPDF合并PDF文档并自动复制到剪贴板
- 【Django使用】4大模块50页md文档,第4篇:Django请求与响应和cookie与session
- crmchat安装搭建教程文档 bug问题调试
- 计算机毕业设计 基于SpringBoot的企业内部网络管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
- 【Python】 Python 操作PDF文档
- Mongodb命名和文档限制
- ModStartCMS v7.6.0 CMS备份恢复优化,主题开发文档更新
- 微信小程序 官方文档使用指南
- Android修行手册-POI操作中文API文档
猜你感兴趣
版权申明
本文"es之null_value":http://eshow365.cn/6-27387-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 10月份程序员书单推荐
- 下一篇: 本机spark 通idea连接Oracle的坑