我正在尝试使用elasticsearch聚合来基于一组过滤器“合并”一个整数数组。我的文档看起来像:
{
"arr": [5, 4, 3, 2, 1],
"name": "test"
}
{
"arr": [4, 3, 2, 1, 0],
"name": "test"
}
{
"arr": [1, 0, 0, 0, 0],
"name": "test"
}
我想使用聚合(或其他es方法)返回
{
"arr": [10, 7, 5, 3, 1]
}
最接近的聚合是
{
"size":0,
"aggs": {
"sum_by_index": {
"filter": {
"terms": {
"name": ["test"]
}
}
},
"aggs": {
"names": {
"terms": {
"field": "name"
},
"aggs": {
"arrs": {
"terms": {
"field": "arr"
}
}
}
}
}
}
}
}
但这导致数组中每个值的总和,其中我想要数组的每个索引的总和。有谁想?
答案 0 :(得分:0)
您可以在脚本中使用_source
来实现相同目的。支持默认groovy
。
"script" : "_source.arr?.sum(0)"