用于对聚合文档提取值进行求和的单值指标聚合。
这些值既可通过文档的数字字段提取,也可通过脚本来生成。
假设数据由销售记录所组成,那么我们可使用下面的请求来计算所有帽子的总销售价格:
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计算的聚合