English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Módulo do Elasticsearch

O Elasticsearch é composto por muitos módulos, que são responsáveis por suas funcionalidades. Esses módulos têm dois tipos de configurações, conforme mostrado a seguir:

  • Configurações estáticas−Antes de iniciar o Elasticsearch, é necessário configurar essas configurações no arquivo config(elasticsearch.yml). Você precisa atualizar todos os nós de interesse na cluster para refletir as mudanças nessas configurações.

  • Configurações dinâmicas −Essas configurações podem ser configuradas em um Elasticsearch em tempo real.

Discutiremos os diferentes módulos do Elasticsearch em seções subsequentes deste capítulo.

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

As configurações de nível de cluster determinam a alocação de fragmentos para diferentes nós e a realocação de fragmentos para rebalancear o cluster. Aqui estão as configurações que controlam a alocação de fragmentos.

Alocação de fragmentos no nível do cluster

ConfiguraçãoValores possíveisDescrição
cluster.routing.allocation.enable

all

Este valor padrão permite a alocação de fragmentos para todos os tipos de fragmentos.

primaries

Isso permite apenas a alocação de fragmentos para o fragmento primário.

new_primaries

Isso permite apenas a alocação de fragmentos para o fragmento primário de novos índices.

none

Isso não permite qualquer alocação de fragmentos.

cluster.routing.allocation.node_concurrent_recoveries

Número (valor padrão)2)

Isso limita o número de recuperações de fragmentos concorrentes.

cluster.routing.allocation.node_initial_primaries_recoveriesnumeric value (default is4)

Isso limita o número de recuperações iniciais de primários paralelas.

cluster.routing.allocation.same_shard.hostValor booleano (padrão é false)

Isso limita o número de cópias do mesmo fragmento alocadas no mesmo nó físico.

index.recovery.concurrent_streamsnumeric value (default is3)

Isso controla o número de fluxos de rede abertos por nó durante a recuperação de fragmentos de pares.

index.recovery.concurrent_small_file_streamsnumeric value (default is2)

Isso pode controlar a recuperação de fragmentos quando o tamanho é menor que5O número de fluxos de rede abertos em cada nó para o pequeno arquivo do mb.

cluster.routing.rebalance.enable

all

This default value allows balancing all types of shards.

primaries

This only allows shard balancing for primary shards.

replicas

This only allows shard balancing for replica shards.

none

This does not allow any form of shard balancing.

cluster.routing.allocation .allow_rebalance

always

This default value always allows rebalancing.

indexs_primaries_active

This allows rebalancing when allocating all primary shards in the cluster.

Indices_all_activeThis allows rebalancing during the allocation of all primary and replica shards.
cluster.routing.allocation.cluster _concurrent_rebalancenumeric value (default is2)

This limits the number of concurrent shard balances in the cluster.

cluster.routing.allocation .balance.shardfloating-point value (default is 0.45f)

This defines the weight factor for the shards allocated to each node.

cluster.routing.allocation .balance.indexfloating-point value (default is 0.55f)

This defines the ratio of the number of shards allocated to each index on a specific node.

cluster.routing.allocation .balance.thresholdnon-negative floating-point value (default is1.0f)

This is the minimum optimization value for the operation that should be performed.

Disk-based shard allocation

ConfiguraçãoValores possíveisDescrição
cluster.routing.allocation.disk.threshold_enabled

Valor booleano (padrão é true)

This will enable and disable the disk allocation decision program.
cluster.routing.allocation.disk.watermark.low

Valor de string (padrão de85)

This indicates the maximum usage rate of the disk; after this point, it will not be possible to allocate other shards to this disk.
cluster.routing.allocation.disk.watermark.high

string value (default is90%)

This indicates the maximum usage during allocation; if this point is reached during allocation, Elasticsearch will allocate that shard to another disk.
cluster.info.update.interval

string value (default30s)

Este é o intervalo entre duas verificações de uso de disco.
cluster.routing.allocation.disk.include_relocations

Valor booleano (padrão é true)

Isto determina se deve considerar os fragmentos alocados atualmente ao calcular a taxa de uso do disco.

Descoberta

Este módulo ajuda a descobrir e manter o estado de todos os nós no cluster. Quando nós são adicionados ou removidos do cluster, o estado do cluster muda. A configuração do nome do cluster é usada para criar diferenças lógicas entre diferentes clusters. Existem alguns módulos que ajudam você a usar os APIs fornecidas pelos provedores de nuvem, conforme mostrado a seguir-

  • Descoberta do Azure

  • EC2Descoberta

  • Descoberta do Google Compute Engine

  • Descoberta Zen

Gateway

Este módulo mantém o estado do cluster e os dados dos fragmentos durante o reinício completo do cluster. A seguir estão as configurações estáticas deste módulo-

ConfiguraçãoValores possíveisDescrição
gateway.expected_nodes

Valor numérico (padrão de 0)

Número de nós no cluster usados para a recuperação de fragmentos locais.
gateway.expected_master_nodes

Valor numérico (padrão de 0)

Número esperado de nós mestres no cluster antes do início da recuperação.
gateway.expected_data_nodes

Valor numérico (padrão de 0)

Número esperado de nós de dados no cluster antes do início da recuperação.
gateway.recover_after_time

Valor de string (padrão de5m)

Este é o intervalo entre duas verificações de uso de disco.
cluster.routing.allocation. disk.include_relocations

Valor booleano (padrão é true)

Isto especifica o tempo de espera para o início do processo de recuperação, independentemente do número de nós que se juntaram 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 a API do Elasticsearch. Este módulo pode ser desativado alterando o valor http.enabled para false.

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

Número sequencialConfigurações e descrições
1

http.port

Esta é a porta para acessar o Elasticsearch, variando de9200-9300。

2

http.publish_port

Esta porta é usada pelo cliente HTTP, também muito útil no caso de firewalls.

3

http.bind_host

Este é o endereço do host do serviço HTTP.

4

http.publish_host

Este é o endereço do host do cliente HTTP.

5

http.max_content_length

Esta é o tamanho máximo permitido para o conteúdo da solicitação HTTP. Seu valor padrão é100mb。

6

http.max_initial_line_length

Este é o tamanho máximo da URL, com valor padrão4kb.

7

http.max_header_size

Este é o tamanho máximo do cabeçalho http, com valor padrão8kb.

8

http.compression

Isso habilita ou desabilita o suporte à compressão, com valor padrão false.

9

http.pipelinig

Isso habilita ou desabilita o pipeline HTTP.

10

http.pipelining.max_events

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

Índice

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

Disjuntor

Isso é usado para evitar que operações causem OutOfMemoryError. Esta configuração limita principalmente o tamanho do heap do JVM. Por exemplo, a configuração indexs.breaker.total.limit, o valor padrão é o tamanho do heap do JVM70%.

Cache de dados de campo

Principalmente usado ao agrupar campos. Recomenda-se ter memória suficiente para alocá-lo. Pode-se usar a configuração index.fielddata.cache.size para controlar a quantidade de memória usada para o cache de dados de campo.

Cache de consultas de nó

Esta memória é usada para armazenar resultados de consultas. O cache usa a estratégia de substituição mais recente (LRU). A configuração Indices.queries.cache.size controla o tamanho da memória deste cache.

Buffer de índice

Este buffer armazena novos documentos no índice e atualiza-os quando o buffer estiver cheio. Configurações como indexs.memory.index_buffer_size controlam o número de pilhas alocadas para este buffer.

Cache de solicitações de fragmento

Este cache é usado para armazenar dados de busca locais de cada fragmento. Pode ser habilitado durante a criação do índice ou desabilitado através de parâmetros de URL.

Desabilitar cache - ?request_cache = true
Habilitar cache "index.requests.cache.enable": true

Recuperação de índices

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

ConfiguraçãoValor Padrão
indices.recovery.concurrent_streams3
indices.recovery.concurrent_small_file_streams2
indices.recovery.file_chunk_size512kb
indices.recovery.translog_ops1000
indices.recovery.translog_size512kb
indices.recovery.compresstrue
indices.recovery.max_bytes_per_sec40mb

Intervalo de TTL

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

ConfiguraçãoValor Padrão
indices.ttl.interval60s
indices.ttl.bulk_size1000

Cada nó pode optar por ser um nó de dados. Esta propriedade pode ser alterada ajustando o ajuste node.data. Definir este valor como false define o nó como não sendo um nó de dados.