Elasticsearch - Módulos

Elasticsearch é composto por vários módulos responsáveis ​​por sua funcionalidade. Esses módulos têm dois tipos de configurações, como segue -

  • Static Settings- Essas configurações precisam ser definidas no arquivo de configuração (elasticsearch.yml) antes de iniciar o Elasticsearch. Você precisa atualizar todos os nós de preocupação no cluster para refletir as mudanças por essas configurações.

  • Dynamic Settings - Essas configurações podem ser definidas no Elasticsearch ao vivo.

Discutiremos os diferentes módulos do Elasticsearch nas próximas seções deste capítulo.

Roteamento em nível de cluster e alocação de fragmentos

As configurações de nível de cluster decidem a alocação de shards para nós diferentes e a realocação de shards para rebalancear o cluster. Estas são as configurações a seguir para controlar a alocação de shard.

Alocação de Fragmentos em Nível de Cluster

Configuração Valor possível Descrição
cluster.routing.allocation.enable
todos Este valor padrão permite a alocação de shards para todos os tipos de shards.
primárias Isso permite a alocação de fragmentos apenas para fragmentos primários.
novos_primários Isso permite a alocação de shard apenas para shards primários para novos índices.
Nenhum Isso não permite nenhuma alocação de shard.
cluster.routing.allocation .node_concurrent_recoveries Valor numérico (por padrão 2) Isso restringe o número de recuperação simultânea de shard.
cluster.routing.allocation .node_initial_primaries_recoveries Valor numérico (por padrão 4) Isso restringe o número de recuperações primárias iniciais paralelas.
cluster.routing.allocation .same_shard.host Valor booleano (por padrão, falso) Isso restringe a alocação de mais de uma réplica do mesmo shard no mesmo nó físico.
indices.recovery.concurrent _streams Valor numérico (por padrão 3) Isso controla o número de fluxos de rede abertos por nó no momento da recuperação de shards de peer.
indices.recovery.concurrent _small_file_streams Valor numérico (por padrão 2) Isso controla o número de fluxos abertos por nó para arquivos pequenos com tamanho inferior a 5 MB no momento da recuperação de shard.
cluster.routing.rebalance.enable
todos Este valor padrão permite o equilíbrio para todos os tipos de shards.
primárias Isso permite o balanceamento de shards apenas para shards primários.
réplicas Isso permite o balanceamento de fragmentos apenas para fragmentos de réplica.
Nenhum Isso não permite qualquer tipo de balanceamento de fragmentos.
cluster.routing.allocation .allow_rebalance
sempre Este valor padrão sempre permite o rebalanceamento.
indices_primaries _active Isso permite o rebalanceamento quando todos os shards primários no cluster são alocados.
Indices_all_active Isso permite o rebalanceamento quando todos os shards primários e de réplica são alocados.
cluster.routing.allocation.cluster _concurrent_rebalance Valor numérico (por padrão 2) Isso restringe o número de balanceamento de shard simultâneos no cluster.
cluster.routing.allocation .balance.shard Valor flutuante (por padrão 0,45f) Isso define o fator de peso para shards alocados em cada nó.
cluster.routing.allocation .balance.index Valor flutuante (por padrão 0,55f) Isso define a proporção do número de shards por índice alocado em um nó específico.
cluster.routing.allocation .balance.threshold Valor flutuante não negativo (por padrão 1.0f) Este é o valor mínimo de otimização das operações que devem ser realizadas.

Alocação de fragmentos baseada em disco

Configuração Valor possível Descrição
cluster.routing.allocation.disk.threshold_enabled Valor booleano (verdadeiro por padrão) Isso ativa e desativa o decisor de alocação de disco.
cluster.routing.allocation.disk.watermark.low Valor da string (por padrão 85%) Isso denota o uso máximo do disco; após esse ponto, nenhum outro fragmento pode ser alocado para esse disco.
cluster.routing.allocation.disk.watermark.high Valor da string (por padrão 90%) Isso denota o uso máximo no momento da alocação; se esse ponto for alcançado no momento da alocação, o Elasticsearch alocará esse fragmento para outro disco.
cluster.info.update.interval Valor da string (por padrão 30s) Este é o intervalo entre as verificações de uso do disco.
cluster.routing.allocation.disk.include_relocations Valor booleano (verdadeiro por padrão) Isso decide se deve considerar os shards atualmente sendo alocados, ao calcular o uso do disco.

Descoberta

Este módulo ajuda um cluster a descobrir e manter o estado de todos os nós nele. O estado do cluster muda quando um nó é adicionado ou excluído dele. A configuração do nome do cluster é usada para criar diferença lógica entre diferentes clusters. Existem alguns módulos que ajudam você a usar as APIs fornecidas por fornecedores de nuvem e aqueles são fornecidos abaixo -

  • Descoberta do Azure
  • Descoberta EC2
  • Descoberta do Google Compute Engine
  • Descoberta zen

Porta de entrada

Este módulo mantém o estado do cluster e os dados de shard nas reinicializações completas do cluster. A seguir estão as configurações estáticas deste módulo -

Configuração Valor possível Descrição
gateway.expected_nodes valor numérico (por padrão 0) O número de nós que se espera que estejam no cluster para a recuperação de shards locais.
gateway.expected_master_nodes valor numérico (por padrão 0) O número de nós mestres que devem estar no cluster antes de iniciar a recuperação.
gateway.expected_data_nodes valor numérico (por padrão 0) O número de nós de dados esperados no cluster antes de iniciar a recuperação.
gateway.recover_after_time Valor da string (por padrão 5m) Este é o intervalo entre as verificações de uso do disco.
cluster.routing.allocation. disk.include_relocations Valor booleano (verdadeiro por padrão)

Isso especifica o tempo pelo qual o processo de recuperação aguardará para iniciar, independentemente do número de nós unidos ao cluster.

gateway.recover_ after_nodes
gateway.recover_after_master_nodes
gateway.recover_after_data_nodes

HTTP

Este módulo gerencia a comunicação entre o cliente HTTP e as APIs Elasticsearch. Este módulo pode ser desativado alterando o valor de http.enabled para false.

A seguir estão as configurações (definidas em elasticsearch.yml) para controlar este módulo -

S.Não Configuração e descrição
1

http.port

Esta é uma porta para acessar o Elasticsearch e varia de 9200-9300.

2

http.publish_port

Esta porta é para clientes http e também é útil no caso de firewall.

3

http.bind_host

Este é um endereço de host para serviço http.

4

http.publish_host

Este é um endereço de host para o cliente http.

5

http.max_content_length

Este é o tamanho máximo do conteúdo em uma solicitação http. Seu valor padrão é 100 MB.

6

http.max_initial_line_length

Este é o tamanho máximo da URL e seu valor padrão é 4kb.

7

http.max_header_size

Este é o tamanho máximo do cabeçalho http e seu valor padrão é 8kb.

8

http.compression

Isso ativa ou desativa o suporte para compactação e seu valor padrão é falso.

9

http.pipelinig

Isso ativa ou desativa o pipelining HTTP.

10

http.pipelining.max_events

Isso restringe o número de eventos a serem enfileirados antes de fechar uma solicitação HTTP.

Índices

Este módulo mantém as configurações, que são definidas globalmente para cada índice. As configurações a seguir estão relacionadas principalmente ao uso de memória -

Disjuntor

Isso é usado para evitar que a operação cause um OutOfMemroyError. A configuração restringe principalmente o tamanho de heap da JVM. Por exemplo, a configuração indices.breaker.total.limit, cujo padrão é 70% do heap da JVM.

Cache Fielddata

Isso é usado principalmente ao agregar em um campo. Recomenda-se ter memória suficiente para alocá-lo. A quantidade de memória usada para o cache de dados de campo pode ser controlada usando a configuração indices.fielddata.cache.size.

Cache de consulta de nó

Essa memória é usada para armazenar em cache os resultados da consulta. Este cache usa a política de despejo de menos usados ​​recentemente (LRU). A configuração Indices.queries.cahce.size controla o tamanho da memória deste cache.

Buffer de indexação

Este buffer armazena os documentos recém-criados no índice e os libera quando o buffer está cheio. Definir como indices.memory.index_buffer_size controla a quantidade de heap alocada para este buffer.

Cache de solicitação de fragmento

Esse cache é usado para armazenar os dados de pesquisa local para cada fragmento. O cache pode ser habilitado durante a criação do índice ou pode ser desabilitado enviando um parâmetro de URL.

Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true

Recuperação de Índices

Ele controla os recursos durante o processo de recuperação. A seguir estão as configurações -

Configuração Valor padrão
indices.recovery.concurrent_streams 3
indices.recovery.concurrent_small_file_streams 2
indices.recovery.file_chunk_size 512kb
indices.recovery.translog_ops 1000
indices.recovery.translog_size 512kb
indices.recovery.compress verdadeiro
indices.recovery.max_bytes_per_sec 40mb

Intervalo TTL

O intervalo de tempo de vida (TTL) define o tempo de um documento, após o qual o documento é excluído. A seguir estão as configurações dinâmicas para controlar este processo -

Configuração Valor padrão
indices.ttl.interval anos 60
indices.ttl.bulk_size 1000

Cada nó tem a opção de ser nó de dados ou não. Você pode alterar esta propriedade alterandonode.dataconfiguração. Definindo o valor comofalse define que o nó não é um nó de dados.