Оглавление курса

Точность и стоимость агрегаций

Разберём распределённый top-N, приблизительные показатели и ограничение числа buckets.

Разделов: 4Elasticsearch 9.4.3Ещё не прочитан

Чему вы научитесь

  • Локальные кандидаты и глобальный ответ
  • Приближение и полный обход
  • Стоимость дерева

Разберём распределённый top-N, приблизительные показатели и ограничение числа buckets.

Примеры course-products используют учебную схему и товар из главы 5 «Mapping и типы полей». Разборы упражнений ниже используют отдельный публичный набор тренажёра.

Логика главы
  • Локальные кандидаты и глобальный ответ
  • Приближение и полный обход
  • Стоимость дерева

Разберём распределённый top-N, приблизительные показатели и ограничение числа buckets.

Курс ориентирован на Elasticsearch 9.4.3. Разборы упражнений используют публичный набор products; остальные запросы показывают отдельные учебные индексы и могут требовать подготовки или прав, недоступных в тренажёре. Ответы сокращены, score может меняться. Для расширенных функций проверяйте лицензию и вариант развёртывания.

01 / 04

Локальные кандидаты и глобальный ответ

terms сначала выбирает кандидатов на шардах, затем объединяет их. Бренд, не попавший в локальный список, может потерять часть счётчика в глобальном ответе. size ограничивает итог, shard_size расширяет локальный список и повышает стоимость. sum_other_doc_count и doc_count_error_upper_bound помогают интерпретировать неполноту, но доступность границ зависит от порядка сортировки.

Самопроверка
02 / 04

Приближение и полный обход

cardinality оценивает число уникальных значений, а percentiles — распределение с приближением. Параметр точности не превращает их в безусловно точные вычисления. Composite aggregation позволяет обходить комбинации ключей страницами: используйте возвращённый after_key, а не выдуманный ключ последнего bucket. Изменение данных между страницами требует согласованной стратегии чтения.

Самопроверка
03 / 04

Стоимость дерева

Pipeline aggregations вычисляют показатели по уже полученным buckets: например, изменение продаж или скользящее среднее. Они не восстанавливают группы, которые были отброшены предыдущим top-N. Вложенные terms могут перемножать число buckets, а высокая кардинальность увеличивает память. Проверяйте search.max_buckets, circuit breakers и размер ответа до масштабирования аналитического запроса.

Ответ cardinality — оценка; не используйте её как бухгалтерский инвариант.

POST /course-products/_search
{
  "size": 0,
  "aggs": {
    "brand_count": {
      "cardinality": {
        "field": "brand",
        "precision_threshold": 1000
      }
    }
  }
}

Как читать результат

Ответ cardinality — оценка; не используйте её как бухгалтерский инвариант.

Самопроверка
04 / 04

Разбор на примере каталога

Пусть бренд X занимает второе место на каждом шарде, а локально выбирается только первый. Глобально X может быть важным, но координатор не получит его полный вклад. Увеличение итогового size не всегда заменяет достаточный локальный shard_size. Для полного обхода всех ключей используют composite, а не бесконечное увеличение terms.size. Если отчёт финансово значим, заранее определите допустимость приближений и при необходимости считайте точный показатель в системе с соответствующими гарантиями.

Самопроверка

Самопроверка

Сначала ответьте самостоятельно, затем раскройте объяснение.

1. Почему terms может терять счётчик?

Некоторые shard-local кандидаты не попали в отправленный список.

2. Что даёт shard_size?

Расширяет локальный список кандидатов ценой памяти и передачи данных.

3. Cardinality всегда точен?

Нет, это приближённая метрика.

4. Как продолжать composite?

Передавать возвращённый after_key.

5. Pipeline восстановит отброшенные группы?

Нет, он работает с уже полученными buckets.

Ситуационный разбор модуля: Агрегации и аналитика

Покупатель выбрал Sony, но должен видеть доступность других брендов в текущей категории. У товара несколько предложений. Определите область каждого счётчика и объясните, почему сумма buckets может отличаться от числа товаров.

Критерии самопроверки

Определены query/post_filter или отдельные filter-области, доступ сохранён, nested offers не выданы за число корневых товаров, учтена точность terms.

Краткая памятка

  • Некоторые shard-local кандидаты не попали в отправленный список.
  • Расширяет локальный список кандидатов ценой памяти и передачи данных.
  • Нет, это приближённая метрика.
  • Передавать возвращённый after_key.
  • Нет, он работает с уже полученными buckets.

Официальная документация

Готовы применить знания?

Подтвердите прочтение, чтобы сохранить своё место. Чтение и решение заданий учитываются отдельно в этом браузере с помощью гостевой cookie.