5.1.13. 总数聚合
总数聚合
单值指标聚合,汇总从聚合文档中提取的数值。这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。
假设数据由代表销售记录的文档组成,我们可以对所有帽子的销售价格求和:
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"hat_prices" : { "sum" : { "field" : "price" } }
}
}
结果:
{
...
"aggregations": {
"hat_prices": {
"value": 450.0
}
}
}
聚合的名称(上面的hat_prices)还用作可以从返回的响应中检索聚合结果的键。
脚本
我们还可以使用脚本来获取销售价格
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"hat_prices" : {
"sum" : {
"script" : {
"source": "doc.price.value"
}
}
}
}
}
这会将 script
参数解释为具有 painless
脚本语言且没有脚本参数的 inline
脚本。要使用存储的脚本,请使用以下语法:
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"hat_prices" : {
"sum" : {
"script" : {
"id": "my_script",
"params" : {
"field" : "price"
}
}
}
}
}
}
值脚本
也可以使用_value
从脚本访问字段值。例如,这将求和所有帽子的价格的平方:
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"square_hats" : {
"sum" : {
"field" : "price",
"script" : {
"source": "_value * _value"
}
}
}
}
}
缺失值
missing
参数定义应如何处理缺少值的文档。默认情况下,缺少该值的文档将被忽略,但也可以将它们视为具有值的文档。例如,这将所有不带价格的帽子销售视为100
。
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"hat_prices" : {
"sum" : {
"field" : "price",
"missing": 100
}
}
}
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。