DBAtlas · Atlas d'exploitation des bases de données

Réduire (shrink) un index ayant trop de shards

ElasticsearchCycle de vie des index

Commande

# 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"
  }
}

Ce que fait la commande

Réduit le nombre de shards primaires d'un index qui ne reçoit plus d'écritures en créant des liens physiques de ses segments vers un nouvel index ; diminue le surcoût en heap et en nombre de shards.

Quand l'utiliser

Quand des index quotidiens ont été créés avec plus de shards que nécessaire, que la limite du nombre de shards est proche, ou avant de déplacer d'anciens index vers le tier warm.

Attention

L'index source est fermé aux écritures pendant le shrink ; ne l'appliquez qu'aux index qui ne reçoivent plus d'écritures. Le nombre de shards cible doit être un diviseur du nombre source (8 -> 4, 2 ou 1). Le nœud où toutes les copies sont rassemblées doit disposer d'autant d'espace disque libre que l'index source. Avec replicas 0, le shard source n'a qu'une seule copie ; ne supprimez pas la source avant la fin de l'opération et le passage du nouvel index en green.

Ouvrir dans DBAtlas →

Voir aussi