首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求和子聚合

求和子聚合
EN

Stack Overflow用户
提问于 2017-07-17 17:40:58
回答 1查看 2.2K关注 0票数 4

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

代码语言:javascript
复制
{
  "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"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

但是,当我这样做的时候,我得到了一个错误:

“类型”:"aggregation_initialization_exception",“原因”:“sum类型的聚合器group_by_sum不能接受子聚合”。

我如何修正它,这样我就可以得到每部智能手机的所有价格之和?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 05:01:38

您就快到了,实际上,sumgroup_by_carrier子聚合都需要在相同的级别上:

代码语言:javascript
复制
{
  "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"
              }
            }
          }
        }
      }
    }
  }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45150450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档