如何在弹性搜索中总结多列

时间:2017-12-13 07:06:08

标签: elasticsearch

如何在弹性搜索中对4列求和。 示例:

 A B C 
 1 1 1 
 1 2 2

A = 2之和,B = 3之和,C = 3之和和total(A,B,C) = 8之和。

如何获得总和? 我已经完成了一个聚合查询,但它正在抛出Unexpected token START_ARRAY

 {
  "aggs": {
    "total_count": {
      "sum": {
        "base_count": {
          "sum": {
            "field": "cse_licenseactivated_base_count"
          }
        },
        "malware_count": {
          "sum": {
            "field": "cse_licenseactivated_malware_count"
          }
        },
        "threat_count": {
          "sum": {
            "field": "cse_licenseactivated_threat_count"
          }
        },
        "urlfiltering_count": {
          "sum": {
            "field": "cse_licenseactivated_urlfiltering_count"
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

你需要使用这样的脚本:

{
  "aggs": {
    "total_count": {
      "sum": {
         "source": "doc.cse_licenseactivated_base_count.value + doc.cse_licenseactivated_malware_count.value + doc.cse_licenseactivated_threat_count.value + doc.cse_licenseactivated_urlfiltering_count.value"
      }
    }
  }
} 

或者您也可以在索引时将所有这些字段汇总并将总和存储在另一个名为cse_licenseactivated_total_count的字段中,这是更好的方法