我想過濾空間桶過濾器聚集塊,並從彈性搜索中得到一個錯誤。沒有這種反應是巨大的,因爲我查詢大量度量和嵌套聚合(這是爲了簡化較大查詢的一部分)bucket_script內部的過濾器聚集拋出錯誤
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 "
}
}
}
}
}
}
}
}
彈性響應:
{
"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_script' ... –
@ AndreiStefan-做什麼我已經添加了一個說明(請告訴我,如果它仍然不清楚) –