如何解决当字段不存在vs字段存在但为null{}时,是否有一种方法可以区分Elasticsearch
"doc1":{
"dummy_attribute":"HI",...
"important_attribute":{}
}
"doc2":{
"dummy_attribute":"HI",...
}
如果我这样搜索:
GET myindex/_search
{
"query": {
"bool": {
"must_not": [{
"exists": {
"field": "important_attribute"
}
}]
}
}
}
它给我两个文件。 有没有一种方法可以只搜索文档中实际上不存在“ important_attribute”的文档?
解决方法
不幸的是,由于ES treats a non-existent value the same way as an empty-ish value(null
,""
,[]
或{}
),这是不可能的。
您可以使用脚本字段快速检查文档是否包含空字典,但是在过滤时无法使用此上下文:
GET myindex/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "important_attribute"
}
}
]
}
},"script_fields": {
"has_empty_dict": {
"script": {
"source": "params._source.containsKey('important_attribute') && params._source.important_attribute.size() == 0"
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。