【问题标题】:Getting multiple average aggregations获取多个平均聚合
【发布时间】:2017-07-18 14:44:57
【问题描述】:

我有一个查询,我先按智能手机分组,然后按运营商分组。在这些嵌套聚合中,我想找到该特定智能手机的每个运营商的平均价格、评级和速度。这是我当前的查询:

{
  "aggs": {
    "group_by_smartphone": {
      "terms": {
        "field": "smartphone"
      },
      "aggs": {
        "group_by_carrier": {
          "terms": {
            "field": "carrier"
          },
          "aggs": {
            "group_by_avg_price": {
              "avg": {
                "field": "price"
              }
            }
          },

            "group_by_rating":{
              "avg":{
                "field": "rating"
              }
            }

        }
      }
    }
  }
}

对于当前的查询,我收到一条错误消息:

"type": "parsing_exception", "reason": "在[group_by_carrier]中找到两个聚合类型定义:[terms]和[group_by_rating]",

如何解决此问题以显示每个平均值的正确结果?

【问题讨论】:

    标签: elasticsearch lucene


    【解决方案1】:

    试试这个:

    {
      "aggs": {
        "group_by_smartphone": {
          "terms": {
            "field": "smartphone"
          },
          "aggs": {
            "group_by_carrier": {
              "terms": {
                "field": "carrier"
              },
              "aggs": {
                "avg_price": {
                  "avg": {
                    "field": "price"
                  }
                },
                "avg_rating":{
                  "avg":{
                    "field": "rating"
                  }
                },
                "avg_speed":{
                  "avg":{
                    "field": "speed"
                  }
                }
              }    
            }
          }
        }
      }
    }
    

    所有子聚合都需要位于同一个aggs 结构内。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 2014-08-12
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多