Fazer shrink de um índice com shards demais
ElasticsearchCiclo de vida do índiceComando
# 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"
}
}O que faz
Reduz a quantidade de shards primários de um índice que não recebe mais escritas, criando hard links dos seus segmentos em um novo índice; diminui o overhead de heap e de quantidade de shards.
Quando usar
Quando índices diários foram criados com mais shards que o necessário, o limite de shards está próximo ou antes de mover índices antigos para o warm tier.
Atenção
O índice de origem fica fechado para escritas durante o shrink; aplique apenas a índices que não recebem mais escritas. A quantidade de shards de destino precisa ser um divisor da quantidade de origem (8 -> 4, 2 ou 1). O nó onde todas as cópias são reunidas precisa de tanto disco livre quanto o índice de origem. Com replicas 0, o shard de origem tem uma única cópia; não apague a origem até a operação terminar e o novo índice ficar green.