Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›ILM: Управление жизненным циклом индексов ›Действия жизненного цикла индекса

Перенос индекса

Разрешенные фазы: hot.

Производит перенос целевого индекса в новый индекс, когда существующий индекс соответствует одному или нескольким условиям переноса.

Если действие переноса используется для индекса-фолловера, выполнение политики ожидает, пока индекс-лидер не перенесёт (или не будет иначе помечен как завершённый), затем преобразует индекс-фолловера в обычный индекс с помощью действия Unfollow.

Целью переноса может быть поток данных или псевдоним индекса. При нацеливании на поток данных новый индекс становится индексом записи потока данных, и его номер поколения увеличивается.

Для переноса псевдонима индекса псевдоним и его индекс записи должны соответствовать следующим условиям:

  • Имя индекса должно соответствовать шаблону ^.*-\d+$, например (my-index-000001).
  • index.lifecycle.rollover_alias должен быть настроен как псевдоним для переноса.
  • Индекс должен быть индексом записи для псевдонима.

Например, если my-index-000001 имеет псевдоним my_data, должны быть настроены следующие параметры.

PUT my-index-000001
{
  "settings": {
    "index.lifecycle.name": "my_policy",
    "index.lifecycle.rollover_alias": "my_data"
  },
  "aliases": {
    "my_data": {
      "is_write_index": true
    }
  }
}

Параметры

Необходимо указать как минимум одно условие переноса. Пустое действие переноса недействительно.

max_age
(Необязательно, единицы времени) Вызывает перенос после достижения максимального времени, прошедшего с момента создания индекса. Время всегда вычисляется с момента создания индекса, даже если дата происхождения индекса настроена на пользовательскую дату, например, при использовании настроек index.lifecycle.parse_origination_date или index.lifecycle.origination_date.
max_docs
(Необязательно, целое число) Вызывает перенос после достижения указанного максимального количества документов. Добавленные документы с момента последнего обновления не включаются в подсчёт. Количество документов не включает документы в реплицированных фрагментах.
max_size

(Необязательно, единицы измерения размера) Вызывает перенос, когда индекс достигает определенного размера. Это общий размер всех первичных фрагментов в индексе. Реплики не учитываются при определении максимального размера индекса.

Чтобы увидеть текущий размер индекса, используйте API _cat indices. Значение pri.store.size отображает объединенный размер всех первичных фрагментов.

max_primary_shard_size

(Необязательно, единицы измерения размера) Вызывает перенос, когда наибольший первичный фрагмент в индексе достигает определенного размера. Это максимальный размер первичных фрагментов в индексе. Как и в случае с max_size, реплики игнорируются.

Чтобы увидеть текущий размер фрагмента, используйте API _cat shards. Значение store показывает размер каждого фрагмента, а prirep указывает, является ли фрагмент первичным (p) или репликой (r).

Пример

Перенос на основе размера наибольшего первичного фрагмента

В этом примере перенос индекса выполняется, когда его наибольший первичный фрагмент достигает размера 50 гигабайт.

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover" : {
            "max_primary_shard_size": "50GB"
          }
        }
      }
    }
  }
}

Перенос на основе размера индекса

В этом примере перенос индекса выполняется, когда его размер достигает 100 гигабайт.

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover" : {
            "max_size": "100GB"
          }
        }
      }
    }
  }
}

Перенос на основе количества документов

В этом примере перенос индекса выполняется, когда он содержит не менее ста миллионов документов.

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover" : {
            "max_docs": 100000000
          }
        }
      }
    }
  }
}

Перенос на основе возраста индекса

В этом примере перенос индекса выполняется, если с момента его создания прошло не менее 7 дней.

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover" : {
            "max_age": "7d"
          }
        }
      }
    }
  }
}

Перенос с использованием нескольких условий

Если задано несколько условий переноса, индекс переносится, когда выполняется любое из условий. В этом примере перенос индекса выполняется, если с момента его создания прошло не менее 7 дней или его размер достиг 100 гигабайт.

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover" : {
            "max_age": "7d",
            "max_size": "100GB"
          }
        }
      }
    }
  }
}

Блокировка перехода фазы условиями переноса

Действие переноса завершается только в том случае, если выполняется одно из его условий. Это означает, что любые последующие фазы заблокированы до успешного переноса.

Например, следующая политика удаляет индекс через день после его переноса. Она не удаляет индекс через день после его создания.

PUT /_ilm/policy/rollover_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50GB"
          }
        }
      },
      "delete": {
        "min_age": "1d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

© 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/7.17/ilm-rollover.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API