Проследим запись от primary shard до поисковой видимости и устойчивого хранения.
- Primary + replicas
- Буфер и translog
- Refresh → поиск
Проследим запись от primary shard до поисковой видимости и устойчивого хранения.
Курс ориентирован на Elasticsearch 9.4.3. Разборы упражнений используют публичный набор products; остальные запросы показывают отдельные учебные индексы и могут требовать подготовки или прав, недоступных в тренажёре. Ответы сокращены, score может меняться. Для расширенных функций проверяйте лицензию и вариант развёртывания.
Шарды и маршрутизация
Индекс разделён на primary shards; реплики хранят копии этих шардов. Routing выбирает primary shard для документа, обычно по хешу идентификатора. Координирующий узел распределяет поиск и объединяет локальные результаты. Больше шардов не означает автоматически быстрее: растут расходы на координацию и число структур, которые нужно обслуживать.
СамопроверкаRefresh, flush и translog
Новые операции попадают в буферы и translog. Refresh открывает доступные для поиска сегменты, но не равен полному устойчивому Lucene commit. Flush создаёт commit и позволяет начать новое поколение translog. Подтверждение записи и поисковая видимость — разные события. Для сценария «записал и ищу» можно использовать refresh=wait_for, учитывая задержку ожидания.
СамопроверкаСегменты и фоновые работы
Сегменты в основном неизменяемы: обновление документа создаёт новую версию и помечает старую удалённой. Merge объединяет сегменты и освобождает место от удалённых записей. Это требует CPU и дискового ввода-вывода. Принудительный force merge для активно записываемого индекса не является регулярной оптимизацией; сначала выясняют характер нагрузки и жизненный цикл данных.
Проверяйте состояние шардов вместе с задержкой записи; green не является метрикой релевантности.
GET /_cluster/healthКак читать результат
Проверяйте состояние шардов вместе с задержкой записи; green не является метрикой релевантности.
Разбор на примере каталога
Во время переиндексации миллион записей не нужно делать видимыми после каждой отдельной операции. Пакеты и подходящий 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.