Looking for elasticsearch Keywords? Try Ask4Keywords

ElasticsearchElasticsearch-Konfiguration


Bemerkungen

Elasticsearch verfügt über eine Reihe von Standardwerten, die eine gute Erfahrung für die Entwicklung bieten. Die implizite Aussage dort ist, dass es nicht unbedingt großartig für die Produktion ist, die auf Ihre eigenen Bedürfnisse zugeschnitten sein muss und daher nicht vorhergesagt werden kann.

Die Standardeinstellungen erleichtern das Herunterladen und Ausführen mehrerer Knoten auf derselben Maschine ohne Konfigurationsänderungen.

Wo sind die einstellungen

In jeder Installation von Elasticsearch befindet sich eine config/elasticsearch.yml . Hier leben die folgenden Einstellungen :

  • cluster.name
    • Der Name des Clusters, dem der Knoten beitritt. Alle Knoten in demselben Cluster müssen denselben Namen haben.
    • Derzeit ist die elastische elasticsearch standardmäßig elasticsearch .
  • node.*
    • node.name
      • Wenn nicht angegeben, wird bei jedem Start des Knotens ein zufälliger Name generiert. Das kann Spaß machen, ist aber für Produktionsumgebungen nicht geeignet.
      • Namen müssen nicht eindeutig sein, sie sollten jedoch eindeutig sein.
    • node.master
      • Eine boolesche Einstellung. Wenn true , bedeutet dies, dass der Knoten ein in Frage kommender Master-Knoten ist und er kann der ausgewählte Master-Knoten sein.
      • Der Standardwert ist " true , dh jeder Knoten ist ein in Frage kommender Master-Knoten.
    • node.data
      • Eine boolesche Einstellung. Wenn dies true , bedeutet dies, dass der Knoten Daten speichert und Suchaktivitäten verarbeitet.
      • Der Standardwert ist " true .
  • path.*
    • path.data
      • Der Ort, an dem Dateien für den Knoten geschrieben werden. Alle Knoten verwenden dieses Verzeichnis zum Speichern von Metadaten, Datenknoten jedoch auch zum Speichern / Indexieren von Dokumenten.
      • ./data .
        • Dies bedeutet, dass data für Sie als Peer-Verzeichnis für die config innerhalb des Elasticsearch-Verzeichnisses erstellt werden.
    • path.logs
      • Der Speicherort, an den Protokolldateien geschrieben werden.
      • ./logs .
  • network.*
    • network.host

      • Der _local_ ist _local_ , was effektiv localhost .
        • Das bedeutet, dass Knoten standardmäßig nicht von außerhalb der aktuellen Maschine kommuniziert werden können!
    • network.bind_host

      • Möglicherweise ein Array. Dies teilt Elasticsearch mit, welche Adressen der aktuellen Maschine auch Sockets binden sollen.
        • Mit dieser Liste können Maschinen von außerhalb der Maschine (z. B. andere Knoten im Cluster) mit diesem Knoten kommunizieren.
      • Standardmäßig ist network.host .
    • network.publish_host

      • Ein einzelner Host, mit dem anderen Knoten mitgeteilt wird, wie sie am besten mit diesem Knoten kommunizieren.
        • Wenn Sie ein Array an network.bind_host , sollte dies derjenige Host sein, der für die Kommunikation zwischen Knoten verwendet werden soll.
      • Voreinstellung für network.host`.
  • discovery.zen.*
    • discovery.zen.minimum_master_nodes
      • Definiert das Quorum für die Masterwahl. Dies muss mithilfe der folgenden Gleichung festgelegt werden: (M / 2) + 1 wobei M die Anzahl der in Frage node.master: true Master-Knoten ist (Knoten, die node.master: true implizit oder explizit).
      • Der Standardwert ist 1 , was nur für einen einzelnen Knotencluster gilt!
    • discovery.zen.ping.unicast.hosts
      • Der Mechanismus zum Verbinden dieses Knotens mit dem Rest eines Clusters.
      • Hier sollten geeignete Hauptknoten aufgelistet werden, damit ein Knoten den Rest des Clusters finden kann.
      • Der Wert, der hier verwendet werden soll, ist der network.publish_host dieser anderen Knoten.
      • Der Standardwert ist localhost Dies bedeutet, dass auf dem lokalen Computer nur nach einem Cluster gesucht wird.

Welche Einstellungen gibt es?

Elasticsearch bietet drei verschiedene Arten von Einstellungen:

  • Clusterweite Einstellungen
    • Dies sind Einstellungen, die für alles im Cluster gelten, beispielsweise für alle Knoten oder alle Indizes.
  • Knoteneinstellungen
    • Diese Einstellungen gelten nur für den aktuellen Knoten.
  • Indexeinstellungen
    • Diese Einstellungen gelten nur für den Index.

Je nach Einstellung kann es sein:

  • Zur Laufzeit dynamisch geändert
  • Geändert nach einem Neustart (Schließen / Öffnen) des Index
    • Einige Einstellungen auf Indexebene erfordern nicht, dass der Index geschlossen und erneut geöffnet wird. Es kann jedoch erforderlich sein, dass der Index zwangsweise erneut zusammengefügt wird, damit die Einstellung wirksam wird.
      • Der Kompressionsgrad eines Index ist ein Beispiel für diesen Einstellungstyp. Sie kann dynamisch geändert werden, aber nur neue Segmente nutzen die Änderung. Wenn sich also ein Index nicht ändert, nutzt er die Änderung niemals aus, es sei denn, Sie erzwingen, dass der Index seine Segmente neu erstellt.
  • Geändert nach einem Neustart des Knotens
  • Geändert nach einem Neustart des Clusters
  • Nie geändert

Überprüfen Sie immer die Dokumentation Ihrer Version von Elasticsearch, was Sie mit einer Einstellung tun können oder nicht.

Wie kann ich Einstellungen vornehmen?

Sie können einige Einstellungen festlegen, von denen einige nicht vorgeschlagen werden:

  • Kommandozeilenargumente

In Elasticsearch 1.x und 2.x können Sie die meisten Einstellungen als Java-Systemeigenschaften mit dem Präfix es. :

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

In Elasticsearch 5.x ändert sich dies, um die Verwendung von Java-Systemeigenschaften zu vermeiden, statt eines benutzerdefinierten Argumenttyps mit -E anstelle von -Des. :

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

Diese Methode zum Anwenden von Einstellungen eignet sich hervorragend, wenn Sie zum Starten und Stoppen des Clusters Tools wie Puppet, Chef oder Ansible verwenden. Es funktioniert jedoch sehr schlecht, wenn es manuell ausgeführt wird.

  • YAML-Einstellungen
    • In Beispielen gezeigt
  • Dynamische Einstellungen
    • In Beispielen gezeigt

Die Reihenfolge, in der die Einstellungen angewendet werden, liegt in der Reihenfolge der dynamischsten:

  1. Transiente Einstellungen
  2. Ständige Einstellungen
  3. Befehlszeileneinstellungen
  4. YAML (statische) Einstellungen

Wenn die Einstellung zweimal auf einer dieser Ebenen eingestellt ist, wird die höchste Stufe wirksam.

Elasticsearch-Konfiguration Verwandte Beispiele