计算群体的百分位数?

时间:2017-03-15 18:23:56

标签: elasticsearch aggregation percentile

如何使用弹性搜索计算由另一个字段分组的一个字段的百分位数?我试过这个:

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

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

  

{“error”:{       “根本原因”: [         {           “type”:“aggregation_initialization_exception”,           “reason”:“[百分位数]类型的聚合器[dom_rank]不能接受子聚合”         }       ]       “type”:“aggregation_initialization_exception”,       “reason”:“[百分位数]类型的聚合器[dom_rank]无法接受子聚合”},“status”:500}

我在这里缺少什么?或者弹性搜索可以吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

想通了,我需要将percentile聚合包装在terms聚合内,而不是相反:

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