DBAtlas · Atlas für Datenbankbetrieb

Index mit zu vielen Shards verkleinern (Shrink)

ElasticsearchIndex-Lebenszyklus

Befehl

# 1) Block writes on the source and gather all shard copies on one node:
PUT log-2026.09/_settings
{
  "index.number_of_replicas": 0,
  "index.routing.allocation.require._name": "node-1",
  "index.blocks.write": true
}
GET _cluster/health/log-2026.09?wait_for_no_relocating_shards=true&timeout=30m
# 2) Create a new index with fewer shards (the target must be a factor of the source):
POST log-2026.09/_shrink/log-2026.09-shrunk
{
  "settings": {
    "index.number_of_shards": 1,
    "index.number_of_replicas": 1,
    "index.routing.allocation.require._name": null,
    "index.blocks.write": null,
    "index.codec": "best_compression"
  }
}

Was es tut

Verringert die Anzahl der Primary Shards eines nicht mehr beschriebenen Index, indem seine Segmente per Hardlink in einen neuen Index übernommen werden; senkt Heap- und Shard-Overhead.

Wann einsetzen

Wenn tägliche Indizes mit mehr Shards als nötig angelegt wurden, das Shard-Limit nahe ist oder bevor alte Indizes in den Warm Tier verschoben werden.

Vorsicht

Der Quellindex wird während des Shrink für Schreibzugriffe gesperrt; nur auf Indizes anwenden, in die nicht mehr geschrieben wird. Die Ziel-Shard-Anzahl muss ein Teiler der Quellanzahl sein (8 -> 4, 2 oder 1). Der Knoten, auf dem alle Kopien zusammengeführt werden, braucht so viel freien Plattenplatz wie der Quellindex. Mit replicas 0 hat der Quell-Shard eine einzige Kopie; lösche die Quelle erst, wenn die Operation abgeschlossen und der neue Index green ist.

In DBAtlas öffnen →

Verwandte Einträge