Como Configurar Seu Primeiro Cluster Elasticsearch para Desenvolvimento

Configure um cluster Elasticsearch local de desenvolvimento, verifique a saúde e evite erros comuns de configuração de nó único e múltiplos nós.

Como Configurar Seu Primeiro Cluster Elasticsearch para Desenvolvimento

Configurar seu primeiro cluster Elasticsearch envolve principalmente escolher uma configuração de desenvolvimento segura e verificar se o nó realmente entrou no cluster esperado. Uma configuração de nó único é suficiente para testes básicos de indexação e busca; uma configuração local de múltiplos nós ajuda a aprender sobre descoberta e alocação de shards.

O foco aqui é o desenvolvimento local. Não reutilize essas configurações relaxadas para um cluster público ou de produção.

Pré-requisitos

Antes de começar, certifique-se de ter os seguintes pré-requisitos atendidos:

  1. Java runtime: Distribuições recentes do Elasticsearch incluem um JDK embutido. Se você usar um pacote ou distribuição que não inclui, instale a versão Java exigida por essa versão do Elasticsearch.
  2. Baixar Elasticsearch: Obtenha a distribuição binária da versão desejada do Elasticsearch no site oficial da Elastic.
  3. Recursos do Sistema: Para testes básicos de desenvolvimento, 2GB de RAM geralmente são suficientes, embora mais seja recomendado para testes com múltiplos nós.

Passo 1: Baixando e Extraindo o Elasticsearch

Após o download (geralmente como um arquivo .zip ou .tar.gz), extraia o arquivo para um diretório onde você deseja hospedar os arquivos do cluster (por exemplo, ~/elasticsearch-8.12.0). Este diretório é referido como o Diretório Home do Elasticsearch.

Passo 2: Configurando um Cluster de Nó Único (Padrão de Desenvolvimento)

Por padrão, quando você executa o Elasticsearch pela primeira vez, ele tenta iniciar como um cluster de nó único. No entanto, versões modernas geralmente exigem configuração explícita, especialmente em relação a configurações de segurança e memória, mesmo para desenvolvimento local.

Os arquivos de configuração estão localizados no diretório config/ dentro do Home do Elasticsearch.

Configuração Essencial (config/elasticsearch.yml)

O arquivo de configuração principal é elasticsearch.yml. Para uma configuração local de nó único, você deve configurar pelo menos o nome do cluster e o nome do nó.

# Configuração do cluster
cluster.name: dev-cluster

# Configuração do nó
node.name: node-1

# Configurações de rede (Use localhost para desenvolvimento)
network.host: 127.0.0.1

# Porta HTTP (Padrão é 9200)
http.port: 9200

# Importante para desenvolvimento: Desabilitar segurança inicialmente (Use com cuidado em produção!)
xpack.security.enabled: false

Aviso sobre Segurança: Desabilitar xpack.security.enabled é comum para configuração inicial de desenvolvimento para simplificar os testes. Nunca execute esta configuração em um ambiente acessível publicamente. Para versões modernas do Elasticsearch (7.x+), você frequentemente precisará executar comandos de configuração primeiro para gerar senhas iniciais se a segurança permanecer habilitada.

Iniciando o Nó Único

Navegue até a raiz do diretório extraído e execute o script de inicialização apropriado. No Linux/macOS:

./bin/elasticsearch

No Windows usando PowerShell:

.\bin\elasticsearch.bat

Aguarde até que os logs indiquem que o nó foi iniciado com sucesso, geralmente mostrando uma mensagem como started.

Passo 3: Verificando o Status do Cluster

Assim que o processo estiver em execução, você pode verificar o status do cluster usando curl na porta HTTP padrão (9200).

Verificando a Saúde do Cluster

Este comando verifica a saúde geral do cluster:

curl -X GET "http://localhost:9200/_cat/health?v"

Trecho de Saída Esperada:

epoch      timestamp cluster     status node.total node.data shards prio initialized
1678886400 10:00:00  dev-cluster green    1          1        0   0           1

O campo status deve ser green, indicando um cluster de nó único saudável.

Verificando Informações do Nó

Você também pode verificar as informações do nó:

curl -X GET "http://localhost:9200/_cat/nodes?v"

Passo 4: Configurando um Cluster de Múltiplos Nós (Para Testes Realistas)

Para desenvolvimento mais realista ou testes de alocação de shards, você precisa de pelo menos dois nós. Isso requer a execução de várias instâncias separadas do Elasticsearch, cada uma com configurações distintas.

Estrutura de Diretórios

Crie diretórios separados para cada nó dentro da sua área de trabalho principal (por exemplo, es_data/node1, es_data/node2). Copie a distribuição base do Elasticsearch para cada um desses diretórios, ou vincule-os à instalação principal.

Diferenças na Configuração dos Nós

Para cada nó, crie um arquivo config/elasticsearch.yml único:

Configuração do Nó 1 (es_data/node1/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
transport.port: 9300
path.data: node1_data  # Caminho de dados único
xpack.security.enabled: false
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
# Esta linha diz ao nó 1 como encontrar outros membros
cluster.initial_master_nodes: ["node-1", "node-2"]

Configuração do Nó 2 (es_data/node2/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-2
network.host: 127.0.0.1
http.port: 9201  # Deve usar uma porta HTTP diferente
transport.port: 9301  # Deve usar uma porta de transporte diferente
path.data: node2_data  # Caminho de dados único
xpack.security.enabled: false
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
# Esta linha diz ao nó 2 como encontrar outros membros
cluster.initial_master_nodes: ["node-1", "node-2"]

Iniciando o Cluster de Múltiplos Nós

  1. Inicie o Nó 1: Navegue até es_data/node1 e execute ./bin/elasticsearch.
  2. Inicie o Nó 2: Navegue até es_data/node2 e execute ./bin/elasticsearch.

Verificando o Cluster de Múltiplos Nós

Verifique a contagem de nós usando a API em qualquer porta HTTP em execução (por exemplo, 9200):

curl -X GET "http://localhost:9200/_cat/nodes?v"

Trecho de Saída Esperada:

ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1    15           50       0   0.01    0.02    0.01    mdi        *      node-1
127.0.0.1    16           51       0   0.00    0.01    0.01    mdi        -      node-2

Se você vir duas entradas sob name, seu cluster de múltiplos nós está formado corretamente.

Melhores Práticas para Ambientes de Desenvolvimento

  • Use Caminhos de Dados Dedicados: Sempre configure path.data explicitamente para cada nó, especialmente em configurações de múltiplos nós, para evitar contaminação acidental de dados entre instâncias.
  • Portas Únicas: Use portas HTTP (http.port) e portas de transporte (transport.port) únicas para cada nó local para que não haja conflitos.
  • Bloqueio de Memória: Para desenvolvimento, certifique-se de não estar encontrando limitações de tamanho de heap. Se você encontrar erros de inicialização relacionados à memória, pode ser necessário ajustar o tamanho do heap da JVM no arquivo jvm.options (embora os padrões geralmente sejam suficientes para testes básicos).

Próximos Passos: Indexando Dados

Com seu cluster em execução, o próximo passo lógico é criar um índice e mapear configurações. Por exemplo, para criar um índice simples chamado products:

curl -X PUT "http://localhost:9200/products?pretty"

Esta configuração fundamental permite que você comece a interagir com o Elasticsearch usando bibliotecas de cliente ou Kibana.