gpt4 book ai didi

elasticsearch - 过滤器聚合中的 bucket_script 引发错误

转载 作者:行者123 更新时间:2023-12-03 00:07:30 25 4
gpt4 key购买 nike

我正在尝试过滤过滤器聚合 block 中的空存储桶,并且从 Elasticsearch 中收到错误消息。没有这个响应是巨大的,因为我正在查询很多指标和嵌套聚合(为了简单起见,这是更大查询的一部分)

GET index/type/_search?ignore_unavailable
{
"size": 0,
"aggs": {
"groupby_country": {
"terms": {
"field": "country",
"size": 2000
},
"aggs": {
"exists__x__filter": {
"filter": {
"bool": {
"filter": [
{
"exists": {
"field": "x"
}
}
]
}
},
"aggs": {
"sum": {
"sum": {
"script": "def val = doc['x'].value; if(val>0) Math.min(val , 20000)"
}
},
"average_distinct": {
"bucket_script": {
"buckets_path": {
"count": "_count"
},
"script": "return params.count "
}
}
}
}
}
}
}
}

弹性 react :
{
"error": {
"root_cause": [],
"type": "reduce_search_phase_exception",
"reason": "[reduce] ",
"phase": "fetch",
"grouped": true,
"failed_shards": [],
"caused_by": {
"type": "class_cast_exception",
"reason": "org.elasticsearch.search.aggregations.bucket.filter.InternalFilter cannot be cast to org.elasticsearch.search.aggregations.InternalMultiBucketAggregation"
}
},
"status": 503
}

我想做的是:
如果对于给定的国家/地区桶,没有字段 x(例如,英国国家 - 2 个文档没有“x”字段)
不要将国家/地区桶返回给客户。

最佳答案

您需要一个 bucket_selector为此和脚本略有不同aaand放在更高的级别:

{
"size": 0,
"aggs": {
"groupby_country": {
"terms": {
"field": "country",
"size": 2000
},
"aggs": {
"exists__x__filter": {
"filter": {
"bool": {
"filter": [
{
"exists": {
"field": "x"
}
}
]
}
},
"aggs": {
"sum": {
"sum": {
"script": "def val = doc['x'].value; if(val>0) Math.min(val , 20000)"
}
}
}
},
"average_distinct": {
"bucket_selector": {
"buckets_path": {
"count": "exists__x__filter._count"
},
"script": "params.count > 0"
}
}
}
}
}
}

关于elasticsearch - 过滤器聚合中的 bucket_script 引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43934111/

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