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

Эволюция индексов

Изменим схему и переключим поисковый трафик, учитывая записи во время переиндексации.

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

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

  • Версии и aliases
  • Переиндексация при работающем приложении
  • Шаблоны и временные данные

Изменим схему и переключим поисковый трафик, учитывая записи во время переиндексации.

Механизм работы
  • Создать v2
  • Перенос + догонка
  • Проверка → alias

Изменим схему и переключим поисковый трафик, учитывая записи во время переиндексации.

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

01 / 04

Версии и aliases

products-v1 и products-v2 — физические индексы, products-read — стабильное имя для чтения. Write alias с is_write_index явно определяет цель записи. Alias не копирует данные и не синхронизирует версии. Операции удаления старой привязки и добавления новой выполняют одним запросом _aliases, чтобы переключить маршрутизацию атомарно.

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

Переиндексация при работающем приложении

Сначала создайте новую схему и настройки, затем переносите документы. Reindex сам по себе не захватывает все изменения, происходящие после начала чтения. Нужен воспроизводимый план: снимок плюс журнал изменений с контрольной позицией либо временная остановка записи на финальном догоне. Перед переключением сравните количество, контрольные документы и поисковые сценарии. Откат требует понимания, какие записи новая версия уже получила.

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

Шаблоны и временные данные

Component templates объединяют повторяемые настройки; index templates задают конфигурацию будущих индексов. Изменение шаблона не переписывает старые индексы. Data streams и rollover подходят прежде всего для потоков временных данных. ILM управляет фазами жизненного цикла в подходящих развёртываниях; serverless использует свои механизмы. Каталог с частыми обновлениями по id не нужно автоматически превращать в поток логов.

Запрос применяют после проверки v2 и догонки изменений, а не вместо неё.

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "products-v1",
        "alias": "products-read"
      }
    },
    {
      "add": {
        "index": "products-v2",
        "alias": "products-read"
      }
    }
  ]
}

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

Запрос применяют после проверки v2 и догонки изменений, а не вместо неё.

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

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

Во время переноса v1→v2 товар меняется и затем удаляется. Если догонка умеет применять только обновления, удалённый товар останется в v2. Поэтому журнал должен включать удаления и иметь контрольную позицию. После завершения переноса проиграйте изменения до согласованной точки, проверьте документы и только затем переключайте alias. Если старый индекс больше не получает события, простой возврат alias через сутки уже не является корректным откатом: данные могли разойтись.

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

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

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

1. Alias переносит данные?

Нет, он задаёт маршрутизацию к индексам.

2. Как переключить alias атомарно?

Передать remove и add в одном запросе _aliases.

3. Reindex ловит все новые записи?

Нет, нужен отдельный механизм догонки.

4. Шаблон меняет старый индекс?

Нет, он действует при создании новых.

5. Что нужно для отката?

Сохранённую старую версию и план учёта записей после переключения.

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

  • Нет, он задаёт маршрутизацию к индексам.
  • Передать remove и add в одном запросе _aliases.
  • Нет, нужен отдельный механизм догонки.
  • Нет, он действует при создании новых.
  • Сохранённую старую версию и план учёта записей после переключения.

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

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

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