【问题标题】:Calculate percentiles for groups?计算组的百分位数?
【发布时间】:2017-03-16 02:39:42
【问题描述】:

如何使用 Elastic Search 计算按另一个字段分组的一个字段的百分位数?我试过这个:

GET /dealergeo/sale/_search
{
  "size": 0,
  "aggs": {
    "dom_rank": {
      "percentiles": {
        "field": "avgdom"
      },
      "aggs": {
        "name": {
          "terms": {
            "field": "make",
            "size": 10
          }
        }
      }
    }
  }
}

所以基本上我想按make对所有数据进行分组,然后计算avgdom的百分位数,但它给出了错误:

{ “错误”:{ “根本原因”: [ { "type": "aggregation_initialization_exception", “原因”:“类型 [percentiles] 的聚合器 [dom_rank] 不能接受子聚合” } ], "type": "aggregation_initialization_exception", "reason": "[percentiles] 类型的聚合器 [dom_rank] 不能接受子聚合" }, "status": 500 }

我在这里缺少什么?或者这可以通过 Elastic Search 实现吗?感谢您的帮助!

【问题讨论】:

    标签: elasticsearch aggregation percentile


    【解决方案1】:

    刚刚发现,我需要将 percentile 聚合包装在 terms 聚合中,而不是相反:

    GET /dealergeo/sale/_search
    {
      "size": 0,
      "aggs": {
        "make_agg": {
          "terms": {
            "field": "make",
            "size": 5
        },
        "aggs": {
          "dom_rank": {
            "percentiles": {
              "field": "avgdom"
         }
        }
       }
      }
     }
    }
    

    【讨论】:

    • 是的,aggs" : 外部 aggs 内的“百分位数”可以解决问题。谢谢!!
    猜你喜欢
    • 2021-02-26
    • 2020-10-07
    • 2016-08-25
    • 2011-12-29
    • 2013-06-20
    • 2017-05-15
    • 2016-03-11
    • 2021-11-29
    • 2016-07-28
    相关资源
    最近更新 更多