Novo no Elasticsearch? Participe do nosso webinar Introdução ao Elasticsearch. Você também pode iniciar um teste gratuito na nuvem do Elastic ou experimentar o Elastic em sua máquina agora.
Não é possível aumentar o número de shards primários de um índice existente, o que significa que um índice precisa ser recriado se você quiser aumentar a quantidade de shards primários. Geralmente, existem dois métodos utilizados nessas situações: a API _reindex e a API _split.
A API _split costuma ser um método mais rápido do que a API _reindex. A indexação deve ser interrompida antes de ambas as operações; caso contrário, as contagens de documentos em source_index e target_index serão diferentes.

Método 1 – usando a API dividida
A API de divisão é usada para criar um novo índice com o número desejado de shards primários, copiando as configurações e mapeando um índice existente. O número desejado de fragmentos primários pode ser definido durante a criação. As seguintes configurações devem ser verificadas antes de implementar a API dividida:
- O índice de origem deve ser somente leitura. Isso significa que o processo de indexação precisa ser interrompido.
- O número de shards primários no índice de destino deve ser um múltiplo do número de shards primários no índice de origem. Por exemplo, se o índice de origem tiver 5 shards primários, o número de shards primários do índice de destino pode ser definido como 10, 15, 20 e assim por diante.
Observação: Se apenas o número do fragmento primário precisar ser alterado, a API de divisão é preferível, pois é muito mais rápida do que a API de reindexação.
Implementando a API dividida
Criar um índice de teste:
O índice de origem deve ser somente leitura para poder ser dividido:
As configurações e os mapeamentos serão copiados automaticamente do índice de origem:
Você pode verificar o progresso com:
Como as configurações e os mapeamentos são copiados dos índices de origem, o índice de destino é somente leitura. Vamos habilitar a operação de escrita para o índice de destino:
Verifique a contagem de documentos (docs.count) nos índices de origem e destino antes de excluir o índice original:
O nome do índice e o nome do alias não podem ser iguais. Você precisa excluir o índice de origem e adicionar o nome do índice de origem como um alias para o índice de destino:
Após adicionar o alias test_split_source ao índice test_split_target , você deve testá-lo com:
Método 2 – usando a API de reindexação
Ao criar um novo índice com a API Reindex, é possível definir qualquer número de shards primários. Após a criação de um novo índice com o número desejado de shards primários, todos os dados do índice de origem podem ser reindexados para esse novo índice.
Além dos recursos de API dividida, os dados podem ser manipulados usando o ingest_pipeline no AP de reindexação. Com o pipeline de ingestão, somente os campos especificados que correspondem ao filtro serão indexados no índice de destino usando a consulta. O conteúdo dos dados pode ser alterado usando um script simples, e vários índices podem ser mesclados em um único índice.
Implementando a API de reindexação
Criar um reindexador de teste:
Copie as configurações e os mapeamentos do índice de origem:
Crie um índice de destino com configurações, mapeamentos e a quantidade desejada de fragmentos (shards):
*Nota: definir number_of_replicas: 0 e refresh_interval: -1 aumentará a velocidade de reindexação.
Inicie o processo de reindexação. Definir requests_per_second=-1 e slices=auto ajustará a velocidade de reindexação.
Você verá o task_id ao executar a API de reindexação. Copie isso e verifique com a API _tasks:
Atualize as configurações após a conclusão da reindexação:
Antes de excluir o índice original, verifique o número de documentos (docs.count) nos índices de origem e destino; eles devem ser iguais.
O nome do índice e o nome do alias não podem ser iguais. Exclua o índice de origem e adicione o nome do índice de origem como um alias para o índice de destino:
Após adicionar o alias test_split_source ao índice test_split_target, teste-o usando:
Resumo
Se você deseja aumentar o número de shards primários de um índice existente, precisa recriar as configurações e os mapeamentos para um novo índice. Existem dois métodos principais para fazer isso: a API de reindexação e a API de divisão. A indexação ativa deve ser interrompida antes de usar qualquer um dos métodos.




