ILM-Policy definieren, über ein Template zuweisen und die Rollover-Kette initialisieren
ElasticsearchIndex-LebenszyklusBefehl
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 } }
}Was es tut
Legt eine ILM-Policy mit den Phasen hot (Rollover), warm (Shrink + Force Merge) und delete an, wendet Policy und Rollover-Alias über ein Template auf neue Indizes an und legt den ersten Index der Kette mit dem Write-Alias an.
Wann einsetzen
Beim Automatisieren von Indexgröße, Aufbewahrung und Löschung für Zeitreihendaten wie Logs oder Metriken.
Vorsicht
min_age in den Phasen warm und delete wird ab dem Rollover-Zeitpunkt gezählt, nicht ab dem Anlegen des Index. Policy-Änderungen wirken auf bestehende Indizes erst nach Abschluss ihrer aktuellen Phase. Shrink und Forcemerge in der Warm-Phase erzeugen hohe IO-Last; in den Index darf nicht geschrieben werden, bis der Force Merge abgeschlossen ist. ILM läuft standardmäßig alle 10 Minuten, Bedingungen werden also nicht sofort ausgewertet.