Рассчитывать процентили для групп?

Как я могу рассчитать процентили одного поля, сгруппированного по другому, с помощью эластичного поиска? Я пробовал это:

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

Итак, в основном я хочу сгруппировать все данные по make, а затем вычислить процентили avgdom, но это дает ошибку:

{"error": {"root_cause": [{"type": "aggregation_initialization_exception", "cause": "Агрегатор [dom_rank] типа [percentiles] не может принимать субагрегации"}], "type": "aggregation_initialization_exception" , "причина": "Агрегатор [dom_rank] типа [процентили] не может принимать субагрегации"}, "status": 500}

Что мне здесь не хватает? или это возможно с помощью эластичного поиска? Спасибо за вашу помощь!


person Psidom    schedule 15.03.2017    source источник


Ответы (1)


Только что понял, мне нужно обернуть агрегацию percentile внутри агрегации terms, а не наоборот:

GET /dealergeo/sale/_search
{
  "size": 0,
  "aggs": {
    "make_agg": {
      "terms": {
        "field": "make",
        "size": 5
    },
    "aggs": {
      "dom_rank": {
        "percentiles": {
          "field": "avgdom"
     }
    }
   }
  }
 }
}
person Psidom    schedule 15.03.2017
comment
да, aggs: процентили внутри внешних aggs делают фокус. Спасибо!! - person Sarah Trees; 02.03.2020