目前有这样一个场景,有imsi,num这两个字段,然后要将imsi相同的num进行累加,累加之后的值在进行range。
比如如下几行数据:
"imsi":"112233",
"num":"4"
"imsi":"112233",
"num":"15"
"imsi":"221133",
"num":"6"
"imsi":"221133",
"num":"2"
"imsi":"332211",
"num":"25"
"imsi":"332211",
"num":"10"
"imsi":"123123",
"num":"59"
累加之后:
40-60 123123 num_sum:59
0-20 221133 num_sum:8 112233 num_sum:19
20-40 332211 num_sum:35
之前我对agg理解:
"range":{
"field":"num",
"ranges":[
{"to":0},
{"from":20,"to":40},
{"from":80}]
}
这里的field只能对docment内的字段有用,无法对聚合后的数值(num_sum)起作用,不知道各位大神知不知道解决办法,小弟不胜感激。
比如如下几行数据:
"imsi":"112233",
"num":"4"
"imsi":"112233",
"num":"15"
"imsi":"221133",
"num":"6"
"imsi":"221133",
"num":"2"
"imsi":"332211",
"num":"25"
"imsi":"332211",
"num":"10"
"imsi":"123123",
"num":"59"
累加之后:
40-60 123123 num_sum:59
0-20 221133 num_sum:8 112233 num_sum:19
20-40 332211 num_sum:35
之前我对agg理解:
"range":{
"field":"num",
"ranges":[
{"to":0},
{"from":20,"to":40},
{"from":80}]
}
这里的field只能对docment内的字段有用,无法对聚合后的数值(num_sum)起作用,不知道各位大神知不知道解决办法,小弟不胜感激。
3 个回复
medcl - 今晚打老虎。
赞同来自:
如果你的 range 范围是已知的,你可以尝试使用 bucket_script 来进行:
1.有一个 range,就定义几个 bucket_script
2.每个 script 对前面的 sum 数据进行判断,符号对应 range 的,对 num 值进行 计算 count 或是计算 sucm,返回你要的值
每个 bucket_script 就对应一个 range 内的结果
yj7778826 - 苦逼小运维
赞同来自:
medcl - 今晚打老虎。
赞同来自:
结果: