【问题标题】:Getting sum sub aggregation获取 sum 子聚合
【发布时间】:2017-12-22 08:35:03
【问题描述】:

我想获得子聚合的总和。例如,我按智能手机分组,按运营商分组,然后是该运营商的平均价格。我想获取特定智能手机的所有运营商的所有价格总和。所以本质上,我想要这样的东西:

{
  "aggs": {
    "group_by_smartphones": {
      "terms": {
        "field": "smartphone",
        "order": {
          "_term": "asc"
        },
        "size": 200
      },
      "aggs": {
        "group_by_sum": {
          "sum": {
            "field": "price"
          },
          "aggs": {
            "group_by_carrier": {
              "terms": {
                "field": "carrier",
                "order": {
                  "group_by_avg": "desc"
                }
              },
              "aggs": {
                "group_by_avg": {
                  "avg": {
                    "field": "price"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

除了,当我这样做时,我得到了这个错误:

"type": "aggregation_initialization_exception", "原因": "类型为 [sum] 的聚合器 [group_by_sum] 不能接受子聚合"

如何解决这个问题,以便获得每部智能手机所有价格的总和?

【问题讨论】:

    标签: search elasticsearch lucene


    【解决方案1】:

    你快到了,实际上sumgroup_by_carrier 子聚合都需要处于同一级别:

    {
      "aggs": {
        "group_by_smartphones": {
          "terms": {
            "field": "smartphone",
            "order": {
              "_term": "asc"
            },
            "size": 200
          },
          "aggs": {
            "sum_prices": {
              "sum": {
                "field": "price"
              }
            },
            "group_by_carrier": {
              "terms": {
                "field": "carrier",
                "order": {
                  "group_by_avg": "desc"
                }
              },
              "aggs": {
                "group_by_avg": {
                  "avg": {
                    "field": "price"
                  }
                }
              }
            }
          }
        }
      }
    }
    

    【讨论】:

    • 你成就了我的一天!感谢您向我介绍同一级别的子聚合。
    • @devansvd 很高兴它有帮助!
    • 如果我们必须先计算总和然后再求总和的平均值怎么办?例如我有每个分行的利润值,我想添加它,以便我可以获得该银行的每日利润,然后我想要每日利润的月平均值
    • @user4906240 随时创建一个新问题来解释您的需求
    猜你喜欢
    • 2018-09-22
    • 2020-08-05
    • 1970-01-01
    • 2016-11-16
    • 2011-09-27
    • 2015-10-04
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多