Как удаляются старые индексы в Elasticsearch?

«Как удаляются старые индексы в Elasticsearch?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основной способ — настройка автоматического удаления через Index Lifecycle Management (ILM). Я создаю политику ILM с фазой delete, которая срабатывает по достижении индексом определённого возраста или размера.

Пример политики для удаления индексов старше 30 дней:

PUT _ilm/policy/log_retention_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50gb",
            "max_age": "1d"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

Эта политика сначала переворачивает индекс при достижении лимитов, а затем удаляет его через 30 дней после создания. Я применяю её к индексам по шаблону, например logs-*.

Для ручного удаления использую API:

# Удалить конкретный индекс
DELETE /old-index-2024-01

# Удалить по шаблону (с осторожностью)
DELETE /app-logs-2023-*

Перед удалением я всегда проверяю, что данные не нужны для расследования инцидентов и что есть актуальные снапшоты в репозитории S3/MinIO, созданные через snapshot API.