Blog

Como configurar o número de réplicas em um índice do Elasticsearch

Aprenda a configurar o number_of_replicas em um índice do Elasticsearch para melhorar o desempenho na busca e proporcionar resiliência contra falhas de nós.

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:

PUT /my_index
{
  "settings": {
    "number_of_replicas": 2
  }
}

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 :

PUT /my_index/_settings
{
  "number_of_replicas": 3
}

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:

  1. Redundância e disponibilidade de dados: Aumentar o number_of_replicas melhora 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.

  2. 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.

  3. 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_replicas mais alto pode diminuir o desempenho da indexação , pois aumenta o número de operações que devem ser realizadas para cada gravação.

  4. 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.

  5. Resiliência à falha do nó: O number_of_replicas deve ser definido considerando o número de nós em seu cluster. Se o number_of_replicas for 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_replicas deve 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_replicas deve 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.

Conteúdo relacionado

Como migrar dados entre diferentes versões do Elasticsearch e entre clusters

Kofi Bartlett

Apresentando a interface de usuário de regras de consulta do Elasticsearch no Kibana.

Jhon Guzmán

Elasticsearch em JavaScript da maneira correta, parte II

Jeffrey Rengifo

Implementação de busca semântica: Construindo uma busca de receitas com Elasticsearch

Andre Luiz

Como implantar o Elasticsearch no AWS Marketplace

Eduard Martin

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)