B字段为text类型
"aggs": {
"result": {
"terms": {
"field": "A字段"
},
"aggs": {
"max_value": {
"max": {
"script": {
"inline": "Integer.parseInt(doc['B字段'].value)",
"lang": "painless"
}
}
}
}
},
"avg": {
"avg_bucket": {
"buckets_path": "result>max_value"
}
}
}
分步解析
# 对A字段进行分组
"terms": {
"field": "A字段"
}
# 取分组内,B字段的最大值
"aggs":{
"max_value":{
"max":{
"script":{
"inline":"Integer.parseInt(doc['B字段'].value)",
"lang":"painless"
}
}
}
}
# 对上一步取到的每组内的最大的B求平均值
"avg": {
"avg_bucket": {
"buckets_path": "result>max_value"
}
}
# result>max_value result和max_value 指向1、2步自定义的字段
结果
{
"_shards":{
"failed":0,
"skipped":0,
"successful":25,
"total":25
},
"aggregations":{
"avg":{
"value":96.5 # 我们需要的平均值,(95+98)/2
},
"result":{
"buckets":[
{
"doc_count":2, # 表示分组内有两个元素
"key":"字段A1",
"max_value":{
"value":95 # 表示分组内有两个元素,最大的是95
}
},
{
"doc_count":1, # 表示分组内有一个元素
"key":"字段A2",
"max_value":{
"value":98 # 表示分组内最大的是98
}
}
],
"doc_count_error_upper_bound":0,
"sum_other_doc_count":0
}
},
"hits":{
"hits":[
],
"max_score":0,
"total":3
},
"timed_out":false,
"took":2
}
网友评论