Elasticsearch:数组中每个元素的总和

时间:2014-05-05 15:10:58

标签: elasticsearch

我正在尝试使用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"
              }
            }
          }
        }
      }
    }
  }
}

但这导致数组中每个的总和,其中我想要数组的每个索引的总和。有谁想?

1 个答案:

答案 0 :(得分:0)

您可以在脚本中使用_source来实现相同目的。支持默认groovy

 "script" : "_source.arr?.sum(0)"