Reindex API

Тема дорожной карты · Elasticsearch

Reindex API в Elasticsearch копирует документы из исходного индекса в целевой через POST /_reindex и является стандартным механизмом изменения маппингов индекса, настроек или анализаторов после того, как данные уже были проиндексированы. Поскольку маппинги полей Elasticsearch неизменяемы для существующих полей, переиндексирование — единственный способ изменить тип поля: например, преобразовать text в keyword или разбить монолитный индекс на индексы, партицированные по дате. Reindex API принимает полный запрос Query DSL в блоке source.query для копирования только отфильтрованного подмножества документов и поддерживает блок script для трансформации документов в процессе копирования. Для больших индексов POST /_reindex может выполняться асинхронно с параметром wait_for_completion=false, возвращая идентификатор задачи, который можно опрашивать через GET /_tasks/<task_id>. Типичный рабочий процесс переиндексирования без простоев в Elasticsearch включает создание нового индекса, запуск Reindex API в фоне, мониторинг прогресса и последующее атомарное переключение псевдонима со старого индекса на новый через POST /_aliases по завершении копирования.

Как это работает

Reindex API: Index templates применяют settings + mappings к индексам, matching pattern (e.g., logs-*). ILM (Index Lifecycle Management) автоматизирует rollover, shrink, freeze, delete по age/size/doc count. Rollover API создаёт новый индекс при условиях (5 дней, 50GB, 100M docs). Aliases дают stable name, указывающий на один или много индексов — приложения query alias, ILM manage-ит backing-индексы. Reindex API копирует docs между индексами (для mapping changes + version migrations).

Когда применять

Для time-series (logs, metrics, events) ВСЕГДА используйте index templates + ILM + rollover — fixed-name индексы растут без границ. Write alias + read alias раздельно для безопасного rollover. Для mapping changes — reindex API; existing field mappings не меняются in place.

Типичные ошибки

Ловушки Reindex API: fixed-name daily index без rollover (упираетесь в shard limits); нет ILM (старые индексы аккумулируются вечно); reindex без aliases (downtime при cutover); меняют mappings + ожидают "just works" (большинство type changes тихо игнорируются).

Связанные понятия

Полезные ресурсы