Elasticsearch中如何对sum聚合结果执行减法运算
实现方案
通过bucket_script管道聚合即可完成两个聚合结果的差值计算,该聚合支持对已生成的聚合指标做算术运算。
完整查询DSL
{ "size": 0, "aggs": { "sumOfQuantity": { "sum": { "field": "quantity" } }, "SumOfAmount": { "sum": { "field": "amount" } }, "SumOfDiscount": { "sum": { "field": "discount" } }, "amountMinusDiscount": { "bucket_script": { "buckets_path": { "totalAmount": "SumOfAmount", "totalDiscount": "SumOfDiscount" }, "script": "params.totalAmount - params.totalDiscount" } } } }
参数&结果说明
buckets_path用来映射需要引用的聚合结果,自定义的key可以直接在script脚本中作为变量使用- 你提供的示例数据运算结果:SumOfAmount = 10+12 = 22,SumOfDiscount = 1+2=3,最终
amountMinusDiscount的返回值为19 size: 0配置表示不需要返回原始文档数据,仅返回聚合结果,如果你原有查询已经配置过对应参数可以忽略该项
内容的提问来源于stack exchange,提问作者Ranjith kumar
相关产品推荐
相关产品推荐

