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 |
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 |
Nó
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.