porque?
Por exemplo, você está executando um 2
cluster de nó com um number_of_replicas
de 1
. Quando você deseja substituir uma das instâncias, apenas adicionando uma terceira instância e, posteriormente, eliminando a antiga, muito provavelmente você acabará movendo muitos dados.
Para resolver o problema, você só precisa aumentar o number_of_replicas
antes de sua nova instância ingressar no cluster. Dessa forma, todos os shards estão apenas sendo sincronizados com a nova instância, mas cada shard também permanecerá nas instâncias antigas. Quando a nova instância está totalmente sincronizada, você deseja desativar a instância antiga e reduzir o number_of_replicas
retorno ao que era.
requisitos
- curl + xargs: você já deve tê-los … 😉
- utilitário de processamento de linha de comando jq : json
one-liner
curl -sg 'http://your-elastic-search:9200/*/_settings'
| jq -r 'to_entries
| .[]
| "curl -sg -XPUT http://your-elastic-search:9200/"
+ .key + "/_settings -d " + (
{index:{number_of_replicas:(
.value.settings.index.number_of_replicas
| tonumber | . +1 | tostring
)}}|tojson|@sh
)'
| bash
NOTA: Há um problema com o renderizador de bloco de código coderwalls, <a href="/sh">@
sh</a>
deveria ser @
sh
.
Para diminuir, basta alterar o jq
script . +1
para. -1