Сортировка после агрегации в Elasticsearch

у меня есть документы с такой структурой:

{
    FIELD1:string,
    FIELD2:
        [ {SUBFIELD:number}, {SUBFIELD:number}...]
}

Я хочу отсортировать результат суммы чисел в FIELD2.Подполя:

GET myindex/_search
{
  "size":0,
  "aggs": {
    "a1": {
      "terms": { 
        "field": "FIELD1",
        "size":0
      },
      "aggs":{
        "a2":{
          "sum":{
            "field":"FIELD2.SUBFIELD"
          }
        }
      }
    }
  }
}

Если я это сделаю, я получу ведра не отсортированными, но я хочу, чтобы ведра были отсортированы по значению "a2". Как я могу это сделать? Спасибо!

1 ответов


у тебя почти получилось. Вам просто нужно добавить order свойства на a1 агрегации терминов, например:

GET myindex/_search
{
  "size":0,
  "aggs": {
    "a1": {
      "terms": { 
        "field": "FIELD1",
        "size":0,
        "order": {"a2": "desc"}      <--- add this
      },
      "aggs":{
        "a2":{
          "sum":{
            "field":"FIELD2.SUBFIELD"
          }
        }
      }
    }
  }
}