Sans gestion du cycle de vie, les index Elasticsearch grossissent indéfiniment — jusqu’à saturer le disque ou dégrader les performances. ILM (Index Lifecycle Management) automatise la rotation, l’archivage et la suppression des index selon leur âge et leur taille.
Les quatre phases ILM
Hot — index actif en écriture et en lecture intensive. Nœuds avec SSD rapide.
Warm — index en lecture uniquement, plus d’écriture. Peut être déplacé sur des nœuds moins coûteux.
Cold — accès occasionnel. Données compressées, nœuds encore moins chers.
Delete — suppression automatique après une durée définie.
Créer une politique ILM
PUT _ilm/policy/logs-policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "50gb",
"max_age": "1d",
"max_docs": 100000000
},
"set_priority": {
"priority": 100
}
}
},
"warm": {
"min_age": "7d",
"actions": {
"shrink": {
"number_of_shards": 1
},
"forcemerge": {
"max_num_segments": 1
},
"set_priority": {
"priority": 50
}
}
},
"cold": {
"min_age": "30d",
"actions": {
"freeze": {},
"set_priority": {
"priority": 0
}
}
},
"delete": {
"min_age": "90d",
"actions": {
"delete": {}
}
}
}
}
}
Data Streams : la façon moderne de gérer les logs
Les data streams remplacent les patterns d’alias + rollover manuels. Ils gèrent automatiquement la création d’index, le rollover et l’application des politiques ILM.
PUT _index_template/logs-template
{
"index_patterns": ["logs-*"],
"data_stream": {},
"template": {
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1,
"index.lifecycle.name": "logs-policy"
},
"mappings": {
"properties": {
"@timestamp": { "type": "date" },
"level": { "type": "keyword" },
"service": { "type": "keyword" },
"message": { "type": "text" },
"trace_id": { "type": "keyword" }
}
}
}
}
# Créer le data stream
PUT _data_stream/logs-production
# Indexer un document (toujours via _doc, jamais un ID fixe)
POST logs-production/_doc
{
"@timestamp": "2026-09-25T14:32:00Z",
"level": "ERROR",
"service": "api",
"message": "Database connection timeout"
}
Vérifier l’état ILM
# État ILM d'un index spécifique
GET logs-production-000001/_ilm/explain
# Déclencher manuellement le rollover (pour tester)
POST logs-production/_rollover
# Voir tous les index et leur phase ILM
GET /_cat/indices?v&h=index,docs.count,store.size,ilm.phase
Architecture hot-warm-cold sur Elasticsearch
# elasticsearch.yml — nœud Hot (SSD)
node.roles: [data_hot, data_content]
node.attr.data: hot
# elasticsearch.yml — nœud Warm (HDD)
node.roles: [data_warm]
node.attr.data: warm
# Dans la policy ILM, Elasticsearch migre automatiquement les index
# vers les nœuds avec le bon attribut selon la phase
Notre formation ELK couvre ILM et l’architecture d’un cluster Elasticsearch de production.