Looking for elasticsearch Keywords? Try Ask4Keywords

ElasticsearchConfiguración de Elasticsearch


Observaciones

Elasticsearch viene con un conjunto de valores predeterminados que proporcionan una buena experiencia de desarrollo fuera de la caja. La declaración implícita allí es que no es necesariamente excelente para la producción, que debe adaptarse a sus propias necesidades y, por lo tanto, no puede predecirse.

La configuración predeterminada facilita la descarga y la ejecución de varios nodos en la misma máquina sin ningún cambio de configuración.

¿Dónde están los ajustes?

Dentro de cada instalación de Elasticsearch hay una config/elasticsearch.yml . Ahí es donde viven las siguientes configuraciones :

  • cluster.name
    • El nombre del clúster al que se une el nodo. Todos los nodos en el mismo clúster deben compartir el mismo nombre.
    • Actualmente por defecto a elasticsearch .
  • node.*
    • node.name
      • Si no se proporciona, se generará un nombre aleatorio cada vez que se inicie el nodo . Esto puede ser divertido, pero no es bueno para entornos de producción.
      • Los nombres no tienen que ser únicos, sino que deben ser únicos.
    • node.master
      • Un entorno booleano. Cuando es true , significa que el nodo es un nodo maestro elegible y puede ser el nodo maestro elegido.
      • El valor predeterminado es true , lo que significa que cada nodo es un nodo maestro elegible.
    • node.data
      • Un entorno booleano. Cuando es true , significa que el nodo almacena datos y maneja la actividad de búsqueda.
      • Por defecto es true .
  • path.*
    • path.data
      • La ubicación en la que se escriben los archivos para el nodo. Todos los nodos usan este directorio para almacenar metadatos, pero los nodos de datos también lo usarán para almacenar / indexar documentos.
      • El valor predeterminado es ./data .
        • Esto significa que los data se crearán para usted como un directorio de pares para config dentro del directorio de Elasticsearch.
    • path.logs
      • La ubicación donde se escriben los archivos de registro.
      • El valor predeterminado es ./logs .
  • network.*
    • network.host

      • El valor predeterminado es _local_ , que es efectivamente localhost .
        • ¡Esto significa que, de forma predeterminada, los nodos no se pueden comunicar desde fuera de la máquina actual!
    • network.bind_host

      • Potencialmente una matriz, esto le dice a Elasticsearch qué direcciones de la máquina actual también deben enlazar sockets.
        • Es esta lista la que permite que las máquinas desde fuera de la máquina (por ejemplo, otros nodos en el clúster) se comuniquen con este nodo.
      • El valor predeterminado es network.host .
    • network.publish_host

      • Un host singular que se utiliza para anunciar a otros nodos la mejor manera de comunicarse con este nodo.
        • Al suministrar una matriz a network.bind_host , este debe ser el único host que se pretende utilizar para la comunicación entre nodos.
      • Por defecto a la red.
  • discovery.zen.*
    • discovery.zen.minimum_master_nodes
      • Define quórum para elección magistral. Esto debe establecerse usando esta ecuación: (M / 2) + 1 donde M es el número de nodos maestros elegibles (nodos que usan node.master: true implícitamente o explícitamente).
      • El valor predeterminado es 1 , que solo es válido para un clúster de un solo nodo.
    • discovery.zen.ping.unicast.hosts
      • El mecanismo para unir este nodo al resto de un cluster.
      • Esto debe incluir los nodos maestros elegibles para que un nodo pueda encontrar el resto del clúster.
      • El valor que se debe utilizar aquí es el network.publish_host de esos otros nodos.
      • El valor predeterminado es localhost , lo que significa que solo busca en la máquina local un clúster para unirse.

¿Qué tipo de configuraciones existen?

Elasticsearch ofrece tres tipos diferentes de configuraciones:

  • Configuraciones de todo el cluster
    • Estas son configuraciones que se aplican a todo en el clúster, como todos los nodos o todos los índices.
  • Configuraciones de nodo
    • Estas son configuraciones que se aplican solo al nodo actual.
  • Configuración del índice
    • Estas son configuraciones que se aplican solo al índice.

Dependiendo de la configuración, puede ser:

  • Cambiado dinámicamente en tiempo de ejecución
  • Cambiado después de un reinicio (cierre / apertura) del índice
    • Algunas configuraciones de índice no requieren que el índice se cierre y se vuelva a abrir, pero podría requerir que el índice se vuelva a fusionar de manera forzosa para que se aplique la configuración.
      • El nivel de compresión de un índice es un ejemplo de este tipo de configuración. Se puede cambiar dinámicamente, pero solo los nuevos segmentos aprovechan el cambio. Entonces, si un índice no cambia, entonces nunca se aprovecha del cambio a menos que obligue al índice a recrear sus segmentos.
  • Cambiado después de un reinicio del nodo
  • Cambiado después de un reinicio del clúster
  • Nunca cambió

Siempre revise la documentación de su versión de Elasticsearch para saber qué puede o no puede hacer con una configuración.

¿Cómo puedo aplicar la configuración?

Puede establecer la configuración de varias maneras, algunas de las cuales no se sugieren:

  • Argumentos de línea de comando

En Elasticsearch 1.xy 2.x, puede enviar la mayoría de las configuraciones como Propiedades del sistema Java con el prefijo es. :

$ bin/elasticsearch -Des.cluster.name=my_cluster -Des.node.name=`hostname`

En Elasticsearch 5.x, esto cambia para evitar el uso de las Propiedades del sistema Java, en lugar de usar un tipo de argumento personalizado con -E tomando el lugar de -Des. :

$ bin/elasticsearch -Ecluster.name=my_cluster -Enode.name=`hostname`

Este enfoque para aplicar la configuración funciona muy bien cuando se usan herramientas como Puppet, Chef o Ansible para iniciar y detener el clúster. Sin embargo, funciona muy mal al hacerlo manualmente.

  • Configuraciones de YAML
    • Se muestra en ejemplos
  • Ajustes dinámicos
    • Se muestra en ejemplos

El orden en que se aplican las configuraciones es el orden más dinámico:

  1. Ajustes transitorios
  2. Ajustes persistentes
  3. Configuraciones de línea de comando
  4. Configuraciones YAML (estáticas)

Si la configuración se establece dos veces, una vez en cualquiera de esos niveles, el nivel más alto tendrá efecto.

Configuración de Elasticsearch Ejemplos relacionados