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

Кластер и жизненный цикл записи

Проследим запись от primary shard до поисковой видимости и устойчивого хранения.

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

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

  • Шарды и маршрутизация
  • Refresh, flush и translog
  • Сегменты и фоновые работы

Проследим запись от primary shard до поисковой видимости и устойчивого хранения.

Механизм работы
  • Primary + replicas
  • Буфер и translog
  • Refresh → поиск

Проследим запись от primary shard до поисковой видимости и устойчивого хранения.

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

01 / 04

Шарды и маршрутизация

Индекс разделён на primary shards; реплики хранят копии этих шардов. Routing выбирает primary shard для документа, обычно по хешу идентификатора. Координирующий узел распределяет поиск и объединяет локальные результаты. Больше шардов не означает автоматически быстрее: растут расходы на координацию и число структур, которые нужно обслуживать.

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

Refresh, flush и translog

Новые операции попадают в буферы и translog. Refresh открывает доступные для поиска сегменты, но не равен полному устойчивому Lucene commit. Flush создаёт commit и позволяет начать новое поколение translog. Подтверждение записи и поисковая видимость — разные события. Для сценария «записал и ищу» можно использовать refresh=wait_for, учитывая задержку ожидания.

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

Сегменты и фоновые работы

Сегменты в основном неизменяемы: обновление документа создаёт новую версию и помечает старую удалённой. Merge объединяет сегменты и освобождает место от удалённых записей. Это требует CPU и дискового ввода-вывода. Принудительный force merge для активно записываемого индекса не является регулярной оптимизацией; сначала выясняют характер нагрузки и жизненный цикл данных.

Проверяйте состояние шардов вместе с задержкой записи; green не является метрикой релевантности.

GET /_cluster/health

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

Проверяйте состояние шардов вместе с задержкой записи; green не является метрикой релевантности.

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

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

Во время переиндексации миллион записей не нужно делать видимыми после каждой отдельной операции. Пакеты и подходящий refresh interval уменьшают число мелких сегментов. Но эта политика отличается от пользовательского сценария редактирования одного товара с немедленным поиском. Для него ожидание refresh может быть оправдано. Сначала классифицируйте потоки записи по требованиям свежести, затем выбирайте параметры. Реплики повышают возможности чтения и отказоустойчивость, но также получают записи и не делают стоимость индексации нулевой.

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

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

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

1. Что выбирает routing?

Primary shard документа; при пользовательском routing его нужно передавать согласованно.

2. Refresh гарантирует backup?

Нет, он отвечает за видимость сегментов для поиска.

3. Зачем translog?

Для восстановления подтверждённых операций, ещё не вошедших в Lucene commit, в рамках политики durability.

4. Почему update требует ресурсов?

Создаётся новая версия, старая удаляется логически, затем merge освобождает место.

5. Что даёт refresh=wait_for?

Ожидает поисковой видимости изменения вместо безусловного принудительного refresh.

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

Товар сохранён в БД и проиндексирован, но поиск сразу после записи его не находит. Команда предлагает добавить реплики. Объясните, какие события подтверждают запись, что делает refresh и почему изменение числа реплик не является решением поисковой видимости.

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

Разделены запись и поисковая видимость; предложен refresh=wait_for для нужного сценария; транзакционная проверка осталась в основной БД.

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

  • Primary shard документа; при пользовательском routing его нужно передавать согласованно.
  • Нет, он отвечает за видимость сегментов для поиска.
  • Для восстановления подтверждённых операций, ещё не вошедших в Lucene commit, в рамках политики durability.
  • Создаётся новая версия, старая удаляется логически, затем merge освобождает место.
  • Ожидает поисковой видимости изменения вместо безусловного принудительного refresh.

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

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

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