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

módulo Elasticsearch

Elasticsearch está compuesto por muchos módulos, que son responsables de sus funciones. Estos módulos tienen dos tipos de configuraciones, como se muestra a continuación:

  • Configuraciones estáticas−Antes de iniciar Elasticsearch, es necesario configurar estas configuraciones en el archivo config(elasticsearch.yml). Debe actualizar todos los nodos de interés en el clúster para reflejar los cambios en estas configuraciones.

  • Configuraciones dinámicas −Estas configuraciones se pueden establecer en tiempo real en Elasticsearch.

Discutiremos los diferentes módulos de Elasticsearch en los siguientes capítulos de este capítulo.

Ruteo y asignación de fragmentos a nivel de clúster

Las configuraciones a nivel de clúster determinan la asignación de fragmentos a diferentes nodos y la redistribución de fragmentos para rebalancear el clúster. A continuación se presentan las configuraciones que controlan la asignación de fragmentos.

Asignación de fragmentos a nivel de clúster

configuraciónValores posiblesDescripción
cluster.routing.allocation.enable

all

Este valor por defecto permite la asignación de fragmentos para todos los tipos de fragmentos.

primaries

Sólo permite la asignación de fragmentos para el fragmento principal.

new_primaries

Sólo permite la asignación de fragmentos para el fragmento principal de un nuevo índice.

none

Esto no permite ninguna asignación de fragmentos.

cluster.routing.allocation.node_concurrent_recoveries

Valor numérico (por defecto)2)

Esto limita la cantidad de restauraciones de fragmentos concurrentes.

cluster.routing.allocation.node_initial_primaries_recoveriesNúmero (por defecto4)

Esto limita la cantidad de restauraciones iniciales de primarios en paralelo.

cluster.routing.allocation.same_shard.hostValor booleano (por defecto false)

Esto limita el número de copias del mismo fragmento asignadas en el mismo nodo físico.

index.recovery.concurrent_streamsNúmero (por defecto3)

Esto controla la cantidad de flujos de red abiertos por cada nodo durante la recuperación de fragmentos de pares.

index.recovery.concurrent_small_file_streamsNúmero (por defecto2)

Esto puede controlar el tamaño inferior a5El número de flujos de red abiertos en cada nodo para los archivos pequeños de mb.

cluster.routing.rebalance.enable

all

Este valor por defecto permite equilibrar todos los tipos de fragmentos.

primaries

Esto solo permite el balanceo de fragmentos principales.

replicas

Esto solo permite el balanceo de fragmentos de copia.

none

Esto no permite ningún tipo de balanceo de fragmentos.

cluster.routing.allocation .allow_rebalance

always

Este valor por defecto siempre permite el rebalanceo.

indexs_primaries_active

Esto permite el rebalanceo al asignar todos los fragmentos principales en el clúster.

Indices_all_activeEsto permite el rebalanceo al asignar todos los fragmentos principales y de copia.
cluster.routing.allocation.cluster _concurrent_rebalanceNúmero (por defecto2)

Esto limita el número de balanceos concurrentes de fragmentos en el clúster.

cluster.routing.allocation .balance.shardValor de punto flotante (por defecto 0.45f)

Esto define el factor de peso del fragmento asignado a cada nodo.

cluster.routing.allocation .balance.indexValor de punto flotante (por defecto 0.55f)

Esto define la proporción del número de fragmentos de cada índice asignados en un nodo específico.

cluster.routing.allocation .balance.thresholdValor de punto flotante no negativo (por defecto1.0f)

Este es el valor de optimización mínimo que debe realizarse.

Asignación de partes basada en disco

configuraciónValores posiblesDescripción
cluster.routing.allocation.disk.threshold_enabled

Valor booleano (por defecto true)

Esto activará y desactivará el programa de decisiones de asignación de disco.
cluster.routing.allocation.disk.watermark.low

Valor de cadena (por defecto)85)

Esto indica la tasa de uso máxima del disco; después de esto, no se podrá asignar otras partes a ese disco.
cluster.routing.allocation.disk.watermark.high

cadenas de caracteres (por defecto90%)

Esto indica la cantidad máxima de uso permitida en la asignación; si se alcanza este punto en la asignación, Elasticsearch asignará esa parte a otro disco.
cluster.info.update.interval

cadenas de caracteres (por defecto30s)

Este es el intervalo entre dos comprobaciones de uso de disco.
cluster.routing.allocation.disk.include_relocations

Valor booleano (por defecto true)

Esto determina si se considera el fragmento asignado actual al calcular la tasa de uso del disco.

Descubrimiento

Este módulo ayuda a descubrir y mantener el estado de todos los nodos en el clúster. Cuando se agregan o eliminan nodos del clúster, el estado del clúster cambia. La configuración del nombre del clúster se utiliza para crear diferencias lógicas entre diferentes clústeres. Algunos módulos pueden ayudarlo a usar las API proporcionadas por los proveedores de nubes, como se muestra a continuación-

  • Descubrimiento de Azure

  • EC2Descubrimiento

  • Descubrimiento de Google Compute Engine

  • Descubrimiento Zen

Gateway

Este módulo mantiene el estado del clúster y los datos de fragmentación durante el reinicio completo del clúster. A continuación se presentan las configuraciones estáticas de este módulo-

configuraciónValores posiblesDescripción
gateway.expected_nodes

Valor numérico (por defecto 0)

Número de nodos en el clúster utilizados para la recuperación de fragmentos locales.
gateway.expected_master_nodes

Valor numérico (por defecto 0)

Número de nodos maestros esperados en el clúster antes de comenzar la recuperación.
gateway.expected_data_nodes

Valor numérico (por defecto 0)

Número de nodos de datos esperados en el clúster antes de comenzar la recuperación.
gateway.recover_after_time

Valor de cadena (por defecto)5m)

Este es el intervalo entre dos comprobaciones de uso de disco.
cluster.routing.allocation. disk.include_relocations

Valor booleano (por defecto true)

Esto especifica el tiempo de espera antes de que comience el proceso de recuperación, independientemente del número de nodos que se unan al clúster.

gateway.recover_after_nodes
gateway.recover_after_master_nodes
gateway.recover_after_data_nodes

HTTP

Este módulo gestiona la comunicación entre el cliente HTTP y la API de Elasticsearch. Puede desactivar este módulo cambiando el valor de http.enabled a false.

A continuación se presentan las configuraciones utilizadas para controlar este módulo (configuradas en el archivo elasticsearch.yml)-

Número de serieConfiguración y descripción
1

http.port

Este es el puerto para acceder a Elasticsearch, con un rango de9200-9300.

2

http.publish_port

Este puerto se utiliza para el cliente HTTP, y también es muy útil en el caso de cortafuegos.

3

http.bind_host

Esta es la dirección del host del servicio HTTP.

4

http.publish_host

Esta es la dirección del host del cliente HTTP.

5

http.max_content_length

Esto es el tamaño máximo permitido para el contenido de la solicitud HTTP. Su valor predeterminado es100mb.

6

http.max_initial_line_length

This is the maximum size of the URL, with the default value being4kb.

7

http.max_header_size

This is the maximum size of the http header, with the default value being8kb.

8

http.compression

This will enable or disable support for compression, with the default value being false.

9

http.pipelinig

This will enable or disable HTTP pipelining.

10

http.pipelining.max_events

This limits the number of events to be queued before closing the HTTP request.

Index

This module maintains the settings for each index globally. The following settings are mainly related to memory usage-

Circuit breaker

This is used to prevent operations from causing OutOfMemoryError. This setting mainly limits the JVM heap size. For example, the indexs.breaker.total.limit setting, by default, is the JVM heap size70%.

Field data cache

Mainly used when aggregating on fields. It is recommended to have enough memory to allocate it. The index.fielddata.cache.size setting can be used to control the amount of memory used for field data caching.

Node query cache

This memory is used to cache query results. The cache uses the least recently used (LRU) eviction policy. The Indices.queries.cache.size setting controls the memory size of this cache.

Index buffer

This buffer stores newly created documents in the index and refreshes them when the buffer is full. Settings like indexs.memory.index_buffer_size control the number of heaps allocated to this buffer.

Shard request cache

This cache is used to store local search data for each shard. It can be enabled during index creation or disabled by sending URL parameters.

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

Index recovery

It controls resources during the recovery process. The following settings are provided-

configuraciónvalor predeterminado
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 TTL

El intervalo de tiempo de vida (TTL) define el tiempo del documento, después del cual se eliminará el documento. A continuación se muestra la configuración dinámica utilizada para controlar este proceso-

configuraciónvalor predeterminado
indices.ttl.interval60s
indices.ttl.bulk_size1000

nodo

Cada nodo puede elegir si es un nodo de datos. Puede cambiar esta propiedad modificando la configuración node.data. Establecer este valor en false definirá que el nodo no es un nodo de datos.