gpt4 book ai didi

elasticsearch - 嵌套过滤器聚合包括doc_count中的空文档

转载 作者:行者123 更新时间:2023-12-02 22:21:57 25 4
gpt4 key购买 nike

我有一个带有以下映射的elasticsearch索引:

{
"properties":{
"asset":{
"properties":{
"customerId":{
"type":"long"
}
}
},
"software":{
"type": "nested",
"properties":{
"id":{
"type":"long"
},
... (more properties)
}
}

}

可能有些文件带有 "software":null当对软件属性(例如id)执行嵌套的过滤器聚合时,过滤器聚合中的doc_count也包括那些为空的软件。

聚合看起来像这样:
"aggregations": {
"aggs": {
"nested": {
"path": "software"
},
"aggregations": {
"filtered": {
"filter": {
"term": {
"software.type": {
"value": "Application",
"boost": 1.0
}
}
},
"aggregations": {
"software_ids": {
"terms": {
"field": "software.id",
"min_doc_count": 1,
"shard_min_doc_count": 0
}
}
}

}
}
}
}

响应部分:
"aggregations": {
"aggs": {
"doc_count": 129958,
"filtered": {
**"doc_count": 7094,**

此doc_count包含“软件”:空
有没有办法排除它们?

编辑:我已经考虑对内部术语聚合使用“丢失”参数(即对于过滤器聚合内部的聚合)。但是想知道是否有办法从聚合中完全排除这种“嵌套”空值。

最佳答案

Missing属性进行救援。

使用“缺少”属性,可以指定如果缺少该字段,该字段应采用的值。您可以将值指定为“JUNK”,然后文档将在聚合中的JUNK存储桶中降落。

现在应该可以进行以下操作。

    "aggregations": {
"aggs": {
"nested": {
"path": "software"
},
"aggregations": {
"filtered": {
"filter": {
"term": {
"software.type": {
"value": "Application",
"boost": 1.0
}
}
},
"aggregations": {
"software_ids": {
"terms": {
"field": "software.id",
"min_doc_count": 1,
"shard_min_doc_count": 0,
"missing": "JUNK"
}
}
}

}
}
}
}

关于elasticsearch - 嵌套过滤器聚合包括doc_count中的空文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54761494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com