Looking for elasticsearch Answers? Try Ask4KnowledgeBase
Looking for elasticsearch Keywords? Try Ask4Keywords

ElasticsearchConfigurazione Elasticsearch


Osservazioni

Elasticsearch viene fornito con un set di valori predefiniti che offrono un'esperienza di sviluppo pronta per l'uso. L'affermazione implicita è che non è necessariamente ottimo per la produzione, che deve essere adattato alle proprie esigenze e quindi non può essere previsto.

Le impostazioni predefinite facilitano il download e l'esecuzione di più nodi sulla stessa macchina senza modifiche alla configurazione.

Dove sono le impostazioni?

All'interno di ogni installazione di Elasticsearch è un config/elasticsearch.yml . È qui che vivono le seguenti impostazioni :

  • cluster.name
    • Il nome del cluster a cui il nodo si sta unendo. Tutti i nodi nello stesso cluster devono condividere lo stesso nome.
    • Attualmente predefinito per elasticsearch .
  • node.*
    • node.name
      • Se non viene fornito, verrà generato un nome casuale ogni volta che il nodo viene avviato . Questo può essere divertente, ma non è buono per gli ambienti di produzione.
      • I nomi non devono essere unici, ma dovrebbero essere unici.
    • node.master
      • Un'impostazione booleana. Quando è true , significa che il nodo è un nodo master idoneo e può essere il nodo master eletto.
      • Il valore predefinito è true , ovvero ogni nodo è un nodo master idoneo.
    • node.data
      • Un'impostazione booleana. Quando è true , significa che il nodo memorizza i dati e gestisce l'attività di ricerca.
      • Il valore predefinito è true .
  • path.*
    • path.data
      • La posizione in cui i file sono scritti per il nodo. Tutti i nodi utilizzano questa directory per archiviare i metadati, ma i nodi dati lo useranno anche per archiviare / indicizzare i documenti.
      • Impostazioni predefinite ./data .
        • Ciò significa che i data verranno creati per te come directory peer da config all'interno della directory Elasticsearch.
    • path.logs
      • La posizione in cui vengono scritti i file di registro.
      • Predefinito ./logs .
  • network.*
    • network.host

      • Il valore predefinito è _local_ , che è in effetti localhost .
        • Ciò significa che, per impostazione predefinita, i nodi non possono essere comunicati dall'esterno della macchina corrente!
    • network.bind_host

      • Potenzialmente un array, questo dice a Elasticsearch quali indirizzi della macchina attuale legano anche i socket.
        • È questo elenco che consente alle macchine esterne alla macchina (ad es. Altri nodi nel cluster) di parlare con questo nodo.
      • Predefinito per network.host .
    • network.publish_host

      • Un host singolare utilizzato per pubblicizzare su altri nodi come comunicare al meglio con questo nodo.
        • Quando si fornisce un array a network.bind_host , questo dovrebbe essere l' unico host che si intende utilizzare per la comunicazione tra nodi.
      • Predefinito a network.host`.
  • discovery.zen.*
    • discovery.zen.minimum_master_nodes
      • Definisce il quorum per l'elezione principale. Questo deve essere impostato usando questa equazione: (M / 2) + 1 dove M è il numero di nodi principali eleggibili (nodi che usano node.master: true implicitamente o esplicitamente).
      • Il valore predefinito è 1 , che è valido solo per un cluster a nodo singolo!
    • discovery.zen.ping.unicast.hosts
      • Il meccanismo per unire questo nodo al resto di un cluster.
      • Questo dovrebbe elencare i nodi master idonei in modo che un nodo possa trovare il resto del cluster.
      • Il valore che dovrebbe essere usato qui è il network.publish_host di quegli altri nodi.
      • Il valore predefinito è localhost , il che significa che cerca solo sul computer locale per un cluster da unire.

Che tipo di impostazioni esistono?

Elasticsearch offre tre diversi tipi di impostazioni:

  • Impostazioni a livello di cluster
    • Queste sono impostazioni valide per tutto il cluster, come tutti i nodi o tutti gli indici.
  • Impostazioni del nodo
    • Queste sono impostazioni che si applicano solo al nodo corrente.
  • Impostazioni dell'indice
    • Queste sono impostazioni che si applicano solo all'indice.

A seconda dell'impostazione, può essere:

  • Modificato dinamicamente in fase di runtime
  • Modificato dopo il riavvio (chiusura / apertura) dell'indice
    • Alcune impostazioni a livello di indice non richiedono la chiusura e la riapertura dell'indice, ma potrebbero richiedere l'unione forzata dell'indice per applicare l'impostazione.
      • Il livello di compressione di un indice è un esempio di questo tipo di impostazione. Può essere modificato dinamicamente, ma solo i nuovi segmenti approfittano del cambiamento. Quindi, se un indice non cambia, non sfrutta mai la modifica a meno che non si imponga l'indice per ricreare i suoi segmenti.
  • Modificato dopo il riavvio del nodo
  • Modificato dopo il riavvio del cluster
  • Mai cambiato

Controlla sempre la documentazione della tua versione di Elasticsearch per ciò che puoi o non puoi fare con un'impostazione.

Come posso applicare le impostazioni?

Puoi impostare le impostazioni in alcuni modi, alcuni dei quali non sono suggeriti:

  • Argomenti della riga di comando

In Elasticsearch 1.xe 2.x, è possibile inviare la maggior parte delle impostazioni come Proprietà di sistema Java con prefisso es. :

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

In Elasticsearch 5.x, questo cambia per evitare di utilizzare Java System Properties, invece di usare un tipo di argomento personalizzato con -E prendendo il posto di -Des. :

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

Questo approccio all'applicazione delle impostazioni funziona alla grande quando si utilizzano strumenti come Puppet, Chef o Ansible per avviare e arrestare il cluster. Tuttavia funziona molto male quando lo fai manualmente.

  • Impostazioni YAML
    • Mostrato negli esempi
  • Impostazioni dinamiche
    • Mostrato negli esempi

L'ordine in cui vengono applicate le impostazioni è nell'ordine del più dinamico:

  1. Impostazioni transitorie
  2. Impostazioni persistenti
  3. Impostazioni della riga di comando
  4. Impostazioni YAML (statiche)

Se l'impostazione è impostata due volte, una volta a uno di questi livelli, il livello più alto ha effetto.

Configurazione Elasticsearch Esempi correlati