弹性搜索按天聚合,两个属性的总和

时间:2016-03-04 17:06:10

标签: elasticsearch

我试图聚合两个字段的总和,但似乎无法使语法正确。

我们说我有以下聚合:



{
  "aggregations": {
    "byDay": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "1d"
      },
      "aggregations": {
        "sum_a": {
          "sum": {
            "field": "a"
          }
        },
        "sum_b": {
          "sum": {
            "field": "b"
          }
        },
        "sum_a_and_b": {
          /* what goes here? */
        }
      }
    }
  }
}




我真正想要的是一个聚合,它是字段a和b的总和。

这似乎很简单,但是我试图让它正确。在线示例要么过于简单(仅在一个字段上进行总结),要么尝试做的远不止这些,所以我发现它们没有用。

1 个答案:

答案 0 :(得分:1)

尝试使用script生成条款的术语聚合:

"aggs": {    
    "sum_a_and_b": {      
        "terms": {        
            "script": "doc['a'].value + doc['b'].value"      
        }    
    }  
}

为了enable dynamic scripting将以下内容添加到配置文件中(默认为elasticsearch.yml):

script.aggs: true # enable just for aggregations