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.
O Elasticsearch foi projetado para ser um sistema distribuído capaz de lidar com grandes volumes de dados e fornecer alta disponibilidade. Uma das principais funcionalidades que permitem isso é o conceito de replicação de índice, que é controlado pela configuração number_of_replicas . Este artigo irá abordar em detalhes essa configuração, suas implicações e como configurá-la corretamente.
O papel das réplicas no Elasticsearch
No Elasticsearch, um índice é uma coleção de documentos que são particionados em vários shards primários. Cada fragmento primário é um índice Apache Lucene independente, e os documentos dentro de um índice são distribuídos entre todos os fragmentos primários. Para garantir alta disponibilidade e redundância de dados, o Elasticsearch permite que cada shard tenha uma ou mais cópias, conhecidas como réplicas.
A configuração number_of_replicas controla o número de shards de réplica (cópias) que o Elasticsearch cria para cada shard primário em um índice. Por padrão, o Elasticsearch cria uma réplica para cada shard primário, mas isso pode ser alterado de acordo com os requisitos do seu sistema.
Configurando o número de réplicas
A configuração number_of_replicas pode ser definida no momento da criação do índice ou atualizada posteriormente. Veja como você pode configurar isso durante a criação do índice:
Neste exemplo, o Elasticsearch criará duas réplicas para cada shard primário no índice my_index .
Para atualizar a configuração number_of_replicas de um índice existente, você pode usar a API _settings :
Este comando atualizará o índice my_index para ter três réplicas para cada fragmento primário.
Implicações da configuração number_of_replicas
A configuração number_of_replicas tem um impacto significativo no desempenho e na resiliência do seu cluster Elasticsearch. Aqui estão alguns pontos importantes a serem considerados:
- Redundância e disponibilidade de dados: Aumentar o
number_of_replicasmelhora a disponibilidade dos seus dados, criando mais cópias de cada fragmento. Se um nó falhar, o Elasticsearch ainda poderá fornecer dados a partir dos fragmentos de réplica nos nós restantes. - Desempenho de busca: Fragmentos de réplica podem atender solicitações de leitura, portanto, ter mais réplicas pode melhorar o desempenho de busca, distribuindo a carga por mais fragmentos.
- Desempenho de gravação: No entanto, cada operação de gravação deve ser realizada em todas as cópias de um fragmento. Portanto, um
number_of_replicasmais alto pode diminuir o desempenho da indexação , pois aumenta o número de operações que devem ser realizadas para cada gravação. - Requisitos de armazenamento: Mais réplicas significam mais espaço de armazenamento. Você deve garantir que seu cluster tenha capacidade suficiente para armazenar as réplicas adicionais.
- Resiliência à falha do nó: O
number_of_replicasdeve ser definido considerando o número de nós em seu cluster. Se onumber_of_replicasfor igual ou maior que o número de nós, seu cluster pode tolerar a falha de vários nós sem perda de dados.
Melhores práticas para definir o número de réplicas
A configuração ideal number_of_replicas depende dos requisitos específicos do seu sistema. No entanto, aqui estão algumas boas práticas gerais:
- Para um cluster de nó único,
number_of_replicasdeve ser definido como 0, pois não há outros nós para armazenar réplicas. - Para um cluster com vários nós,
number_of_replicasdeve ser definido como pelo menos 1 para garantir redundância de dados e alta disponibilidade. - Se o desempenho da pesquisa for uma prioridade, considere aumentar o
number_of_replicas. No entanto, tenha em mente a relação de compromisso entre o desempenho de gravação e os requisitos de armazenamento. - Certifique-se sempre de que seu cluster tenha capacidade suficiente para armazenar as réplicas adicionais.




