DBAtlas · Atlas de operaciones de bases de datos

Reducir (shrink) un índice con demasiados shards

ElasticsearchCiclo de vida de índices

Comando

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

Qué hace

Reduce el número de shards primarios de un índice en el que ya no se escribe creando hard links de sus segmentos en un índice nuevo; reduce la sobrecarga de heap y de número de shards.

Cuándo usarlo

Cuando los índices diarios se crearon con más shards de los necesarios, el límite de shards está cerca o antes de mover índices antiguos al tier warm.

Precaución

El índice de origen queda cerrado a escrituras durante el shrink; aplíquelo solo a índices en los que ya no se escribe. El número de shards de destino debe ser un divisor del de origen (8 -> 4, 2 o 1). El nodo donde se reúnen todas las copias necesita tanto disco libre como el índice de origen. Con replicas 0 el shard de origen tiene una sola copia; no borre el origen hasta que termine la operación y el nuevo índice esté en green.

Abrir en DBAtlas →

Relacionado