Управление существующими индексами
Если вы использовали Curator или какой-либо другой механизм для периодического управления индексами, при переходе к ILM у вас есть несколько вариантов:
- Настройте шаблоны индексов, чтобы использовать политику ILM для управления новыми индексами. После того, как ILM начнёт управлять текущим индексом записи, вы можете применить соответствующую политику к старым индексам.
- Переиндексируйте данные в управляемый ILM индекс.
Начиная с версии Curator 5.7, Curator игнорирует управляемые ILM индексы.
Применение политик к существующим индексам временных рядов
Самый простой способ перехода к управлению периодическими индексами с помощью ILM — настроить шаблон индекса, чтобы применить политику жизненного цикла к новым индексам. После того, как ILM начнёт управлять индексом записи, вы можете ручно применить политику к старым индексам.
Определите отдельную политику для старых индексов, которая опускает действие смены индекса. Смена индекса используется для управления тем, куда идут новые данные, поэтому она не применима.
Обратите внимание, что политики, применённые к существующим индексам, сравнивают min_age для каждой фазы с первоначальной датой создания индекса и могут сразу перейти через несколько фаз. Если ваша политика выполняет ресурсоёмкие операции, такие как слияние, вы не хотите, чтобы много индексов выполняли эти операции одновременно при переключении на ILM.
Вы можете указать разные min_age значения в политике, которую вы используете для существующих индексов, или установить index.lifecycle.origination_date для управления тем, как рассчитывается возраст индекса.
После того, как все индексы до ILM будут вытеснены и удалены, можно удалить политику, используемую для их управления.
Если вы используете Beats или Logstash, включение ILM в версии 7.0 и выше автоматически настроит ILM для управления новыми индексами. Если вы используете Beats через Logstash, вам может потребоваться изменить конфигурацию вывода Logstash и вызвать настройку Beats для использования ILM для новых данных.
Переиндексация в управляемый индекс
Альтернатива применению политик к существующим индексам — переиндексация данных в управляемый ILM индекс. Это может быть нужно, если создание периодических индексов с очень небольшим объёмом данных привело к чрезмерному количеству фрагментов или если постоянная индексация в один и тот же индекс привела к большим фрагментам и проблемам с производительностью.
Сначала вам необходимо настроить новый управляемый ILM индекс:
- Обновите шаблон индекса, чтобы включить необходимые настройки ILM.
- Запустите начальный индекс в качестве индекса записи.
- Прекратите запись в старые индексы и индексируйте новые документы, используя псевдоним, указывающий на запущенный индекс.
Для переиндексации в управляемый индекс:
- Приостановите индексацию новых документов, если вы не хотите смешивать новые и старые данные в управляемом ILM индексе. Смешивание старых и новых данных в одном индексе безопасно, но комбинированный индекс должен сохраняться до тех пор, пока вы не готовы удалить новые данные.
-
Уменьшите интервал опроса ILM, чтобы убедиться, что индекс не станет слишком большим, ожидая проверки смены индекса. По умолчанию ILM проверяет, какие действия необходимо выполнить, каждые 10 минут.
resp = client.cluster.put_settings( persistent={ "indices.lifecycle.poll_interval": "1m" }, ) print(resp)response = client.cluster.put_settings( body: { persistent: { 'indices.lifecycle.poll_interval' => '1m' } } ) puts responseconst response = await client.cluster.putSettings({ persistent: { "indices.lifecycle.poll_interval": "1m", }, }); console.log(response);PUT _cluster/settings { "persistent": { "indices.lifecycle.poll_interval": "1m" } }Проверяйте каждые минуту, нужно ли выполнять действия ILM, такие как смена индекса.
-
Переиндексируйте данные, используя API переиндексации. Если вы хотите разделить данные в порядке их первоначальной индексации, вы можете выполнить отдельные запросы переиндексации.
Документы сохраняют свои исходные идентификаторы. Если вы не используете автоматически генерируемые идентификаторы документов и переиндексируете из нескольких исходных индексов, вам может потребоваться выполнить дополнительную обработку, чтобы убедиться, что идентификаторы документов не конфликтуют. Один из способов сделать это — использовать скрипт в вызове переиндексации для добавления имени исходного индекса к идентификатору документа.
resp = client.reindex( source={ "index": "mylogs-*" }, dest={ "index": "mylogs", "op_type": "create" }, ) print(resp)response = client.reindex( body: { source: { index: 'mylogs-*' }, dest: { index: 'mylogs', op_type: 'create' } } ) puts responseconst response = await client.reindex({ source: { index: "mylogs-*", }, dest: { index: "mylogs", op_type: "create", }, }); console.log(response);POST _reindex { "source": { "index": "mylogs-*" }, "dest": { "index": "mylogs", "op_type": "create" } }Соответствует вашим существующим индексам. Использование префикса для новых индексов значительно упрощает использование этой схемы индексов.
Псевдоним, указывающий на ваш запущенный индекс.
Останавливает переиндексацию, если несколько документов имеют одинаковый идентификатор. Это рекомендуется для предотвращения случайной перезаписи документов, если документы в разных исходных индексах имеют одинаковый идентификатор.
-
После завершения переиндексации установите интервал опроса ILM обратно к значению по умолчанию, чтобы предотвратить ненужную нагрузку на мастер-узел:
resp = client.cluster.put_settings( persistent={ "indices.lifecycle.poll_interval": None }, ) print(resp)response = client.cluster.put_settings( body: { persistent: { 'indices.lifecycle.poll_interval' => nil } } ) puts responseconst response = await client.cluster.putSettings({ persistent: { "indices.lifecycle.poll_interval": null, }, }); console.log(response);PUT _cluster/settings { "persistent": { "indices.lifecycle.poll_interval": null } } -
Возобновите индексацию новых данных с использованием того же псевдонима.
Запросы с использованием этого псевдонима теперь будут искать ваши новые данные и все переиндексированные данные.
- После проверки доступности всех переиндексированных данных в новых управляемых индексах, можно безопасно удалить старые индексы.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/ilm-with-existing-indices.html