ES6.0.0官方参考指南翻译~指标聚合~Sum Aggregation

用于对聚合文档提取值进行求和的单值指标聚合。

这些值既可通过文档的数字字段提取,也可通过脚本来生成。

假设数据由销售记录所组成,那么我们可使用下面的请求来计算所有帽子的总销售价格:

POST /sales/_search?size=0

{

"query" : {

"constant_score" : {

"filter" : {

"match" : { "type" : "hat" }

}

}

},

"aggs" : {

"hat_prices" : { "sum" : { "field" : "price" } }

}

}

响应为:

{

...

"aggregations": {

"hat_prices": {

"value": 450.0

}

}

}

聚合名称(即上面的intraday_return)也可作为检索聚合结果的key。

Script

也可通过脚本来获取总销售价:

POST /sales/_search?size=0

{

"query" : {

"constant_score" : {

"filter" : {

"match" : { "type" : "hat" }

}

}

},

"aggs" : {

"hat_prices" : {

"sum" : {

"script" : {

"source": "doc.price.value"

}

}

}

}

}

它会使用painless脚本语言来将script参数解析为内联脚本(不带参数)。

可通过如下语法来使用存储脚本:

POST /sales/_search?size=0

{

"query" : {

"constant_score" : {

"filter" : {

"match" : { "type" : "hat" }

}

}

},

"aggs" : {

"hat_prices" : {

"sum" : {

"script" : {

"id": "my_script",

"params" : {

"field" : "price"

}

}

}

}

}

}

Value Script

在脚本中,也可使用_value来访问字段值.例如,下面的请求会对所有帽子价格的平方进行求和:

POST /sales/_search?size=0

{

"query" : {

"constant_score" : {

"filter" : {

"match" : { "type" : "hat" }

}

}

},

"aggs" : {

"square_hats" : {

"sum" : {

"field" : "price",

"script" : {

"source": "_value * _value"

}

}

}

}

}

Missing value

missing参数用于定义如何处理文档中的缺失值。

默认情况下,缺失值文档会被忽略。若不想忽略,则可以使用missing参数定义缺失值。

例如,下面的聚合请求会将price字段的缺失值视为100.

POST /sales/_search?size=0

{

"query" : {

"constant_score" : {

"filter" : {

"match" : { "type" : "hat" }

}

}

},

"aggs" : {

"hat_prices" : {

"sum" : {

"field" : "price",

"missing": 100 #1

}

}

}

}

1.price字段中无值的文档会与值为100的文档放在同一个桶中.

全部指标聚合,请参考

单值指标聚合

多值指标聚合

地理位置相关聚合

可执行Map-Reduce计算的聚合