elasticsearch实现聚合后两个字段相除/相加/相减/相乘运算

1、实际需求

在sum聚合运算时会有两个值sum之后相除的运算方式sum(A)/sum(B),这就需要用到es的Bucket Script Aggregation聚合方式。

备注:由于这个问题是一年之前遇到的,现在的新版ES应该有细微变化了,具体的可能需要重测试,但是评论区有人给出了新版的方法,可以尝试一下。

"aggregations" : {
   "A" : {
     "sum" : {
       "field" : "A"
     }
   },
   "B" : {
     "sum" : {
       "field" : "B"
     }
   },
   "(A/B)" : {
     "bucket_script" : {
       "script" : {
         "inline" : "tmpA/tmpB"
       },
       "buckets_path" : {
         "tmpA" : "A",
         "tmpB" : "B"
       }
     }
   }
 }

bucket_path字段是一个映射map,用别名映射A和B聚合的桶,然后再在script中做脚本运算,但是es不支持按照聚合生成字段“(A/B)”排序。

2、Pipeline Aggregations(管道聚合)

sum和bucket_script聚合都是管道聚合(Pipeline)</

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值