@versh23
Разработчик

Elasticsearch агрегация composite для nested object, можно ли так?

Всем привет.
Есть тип, в котором есть nested поле - это объект id параметра и его значений ( для фасетного поиска)

"parameters": {
        "type": "nested",
        "properties": {
          "id": {
            "type": "integer"
          },
          "values": {
            "type": "keyword"
          }
        }
      }


хочу получить данные по количеству объектов для каждого значения параметра.

GET places/place/_search?size=0
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "parameters": {
      "nested": {
        "path": "parameters"
      },
      "aggs": {
        "parameters_cnt_i": {
          "terms": {
            "field": "parameters.id",
            "size": 100
          },
          "aggs": {
            "parameters_cnt_v": {
              "terms": {
                "field": "parameters.values",
                "size": 100
              }
            }
          }
        }
      }
    }
  }
}


Но это не особо хорошо, завышать size не хочется, рассчитывать его заранее - тоже.
в документации говорится

If you want to retrieve all terms or all combinations of terms in a nested terms aggregation you should use the Composite aggregation

Но не получается сделать.
Composite нельзя в aggs применять, а иначе nested в source не видны.
Есть ли решение?
  • Вопрос задан
  • 459 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы