Как Elastic Search Composite Aggregation по всему индексу и возвращает весь результат

Я попытался вызвать составную агрегацию в ES, но вернул лишь несколько результатов, очевидно, что составная агрегация выполняется только для 10 записей.

Тот же вопрос, что и в заголовке: Как составная агрегация эластичного поиска по всему индексу и возврат всего результата?

Запрос:

Ответ:

🤔 А знаете ли вы, что...
Elasticsearch предоставляет множество инструментов для мониторинга и управления кластером.


58
1

Ответ:

Решено

Параметр размера можно установить, чтобы определить, сколько составных сегментов должен быть возвращен. Каждое составное ведро рассматривается как отдельное сегмент, поэтому установка размера 10 вернет первые 10 составных сегменты, созданные из источников значений. В ответе содержится значения для каждого составного сегмента в массиве, содержащем значения извлекается из каждого источника ценности. Defaults to 10.

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-composite-aggregation.html#_size

GET /_search
{
  "size": 0,
  "aggs": {
    "my_buckets": {
      "composite": {
        "size": 2,   <--- update this
        "sources": [
          { "date": { "date_histogram": { "field": "timestamp", "calendar_interval": "1d" } } },
          { "product": { "terms": { "field": "product" } } }
        ]
      }
    }
  }
}

Обновлять:

Вот пример:

PUT composite/_doc/1
{
  "product": ["foo", "bar"],
  "number": [23, 65, 76, 61, 60, 85]
}


GET composite/_search
{
  "size": 0,
  "aggs": {
    "my_buckets": {
      "composite": {
        "size": 20, 
        "sources": [
          { "products": { "terms": { "field": "product.keyword" } } },
          { "numbers": { "terms": { "field": "number" } } }
        ]
      }
    }
  }
}