我需要使用脚本字段获取 Kibana 中字段的总值。
例如,如果 id 字段的值为1,2,3,4,5
我期待sum
所有id的值,我期待输出为15。
我需要在获得每个字段的总数后才能达到以下公式。
lifetime=a-b-c-(d-e-f)*g
这里 a,b,c,d,e,f,g 都是每个字段值的总和。
有关详细信息,请参阅由我提出的question。
答案 0 :(得分:1)
你绝对可以使用总和聚合来获得id的总和,但是为了进一步等同你的公式,你可以看一下pipeline aggregations来使用和值进行进一步的计算。
查看bucket script aggregation,使用适当的存储分路径来汇总聚合器,您就可以实现解决方案。
样本文件
{
"a":100,
"b":200,
"c":400,
"d":600
}
查询
{
"size": 0,
"aggs": {
"result": {
"terms": {"script":"'nice to have it here'"},
"aggs": {
"suma": {
"sum": {
"field": "a"
}
},
"sumb": {
"sum": {
"field": "b"
}
},
"sumc": {
"sum": {
"field": "c"
}
},
"equation": {
"bucket_script": {
"buckets_path": {
"suma": "suma",
"sumb": "sumb",
"sumc" : "sumc"
},
"script": "suma + sumb + 2*sumc"
}
}
}
}
}
}
现在,您可以在每个sum agg上添加术语过滤器,以过滤每个总和聚合器的总和。