Définir une politique ILM, l'attacher via un template et initialiser la chaîne de rollover
ElasticsearchCycle de vie des indexCommande
PUT _ilm/policy/log-policy
{
"policy": {
"phases": {
"hot": { "actions": { "rollover": { "max_primary_shard_size": "50gb", "max_age": "1d" }, "set_priority": { "priority": 100 } } },
"warm": { "min_age": "7d", "actions": { "shrink": { "number_of_shards": 1 }, "forcemerge": { "max_num_segments": 1 }, "set_priority": { "priority": 50 } } },
"delete": { "min_age": "30d", "actions": { "delete": {} } }
}
}
}
PUT _index_template/log
{
"index_patterns": ["log-*"],
"priority": 500,
"template": {
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index.lifecycle.name": "log-policy",
"index.lifecycle.rollover_alias": "log"
}
}
}
# Create the first index with the write alias (its name must end with a number such as -000001):
PUT log-000001
{
"aliases": { "log": { "is_write_index": true } }
}Ce que fait la commande
Crée une politique ILM avec les phases hot (rollover), warm (shrink + force merge) et delete, applique la politique et l'alias de rollover aux nouveaux index via un template, et crée le premier index de la chaîne avec l'alias d'écriture.
Quand l'utiliser
Pour automatiser la taille, la rétention et la suppression des index pour des données de séries temporelles comme les logs ou les métriques.
Attention
min_age dans les phases warm et delete est compté à partir du rollover, et non de la création de l'index. Les modifications de politique ne s'appliquent aux index existants qu'après la fin de leur phase en cours. Shrink et forcemerge dans la phase warm génèrent une forte IO ; l'index ne doit pas recevoir d'écritures avant la fin du force merge. ILM s'exécute toutes les 10 minutes par défaut, les conditions ne sont donc pas évaluées instantanément.