美文网首页
对A字段进行分组,取每组内最大的B字段求平均值

对A字段进行分组,取每组内最大的B字段求平均值

作者: butters001 | 来源:发表于2021-09-08 19:56 被阅读0次

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
}

相关文章

网友评论

      本文标题:对A字段进行分组,取每组内最大的B字段求平均值

      本文链接:https://www.haomeiwen.com/subject/rtxbwltx.html