gpt4 book ai didi

elasticsearch - 使用空键过滤出Elasticsearch聚合桶

转载 作者:行者123 更新时间:2023-12-03 00:55:10 27 4
gpt4 key购买 nike

我有一个聚合查询,如下所示

"subjectArea.untouched" : {
"terms" : {
"field" : "subjectArea.untouched",
"size" : 10,
"exclude" : "" //to exclude buckets with empty string key
}
}

但结果不符合预期
"aggregations" : {
"subjectArea.untouched" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "", //Not expecting this bucket
"doc_count" : 13
}, {
"key" : "subjectArea",
"doc_count" : 1
}, {
"key" : "test1000",
"doc_count" : 1
} ]
}
}

我不想要结果中的第一个桶。有人能帮我吗?

最佳答案

您需要在查询的过滤器部分中排除带有空字符串的文档。
对于您的用例,查询将类似于以下内容:

{
"query": {
"bool": {
"must_not": [
{
"match": {
"subjectArea.untouched": ""
}
}
]
}
},
"aggs": {
"subjectArea.untouched": {
"terms": {
"field": "subjectArea.untouched",
"size": 10
}
}
},
"size": 0
}

基本上,查询的第一部分表现为sql中的 WHERE 子句。

编辑:
要仅过滤桶中的来过滤 (不过滤文档),则应使用filter aggregations
查询如下所示:
{
"aggs": {
"filter_out": {
"filter": {
"bool": {
"must_not": {
"match": {
"subjectArea.untouched": ""
}
}
}
},
"aggs": {
"subjectArea.untouched": {
"terms": {
"field": "subjectArea.untouched",
"size": 10
}
}
}
}
},
"size": 0
}

关于elasticsearch - 使用空键过滤出Elasticsearch聚合桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45545126/

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