Elasticsearch - Module

Elasticsearch besteht aus einer Reihe von Modulen, die für die Funktionalität verantwortlich sind. Diese Module haben zwei Arten von Einstellungen:

  • Static Settings- Diese Einstellungen müssen in der Konfigurationsdatei (elasticsearch.yml) konfiguriert werden, bevor Elasticsearch gestartet wird. Sie müssen alle betroffenen Knoten im Cluster aktualisieren, um die Änderungen durch diese Einstellungen widerzuspiegeln.

  • Dynamic Settings - Diese Einstellungen können in der Live-Elasticsearch vorgenommen werden.

Wir werden die verschiedenen Module von Elasticsearch in den folgenden Abschnitten dieses Kapitels diskutieren.

Routing auf Cluster-Ebene und Shard-Zuweisung

Einstellungen auf Clusterebene entscheiden über die Zuordnung von Shards zu verschiedenen Knoten und die Neuzuweisung von Shards, um den Cluster neu auszugleichen. Dies sind die folgenden Einstellungen zur Steuerung der Shard-Zuordnung.

Shard-Zuordnung auf Cluster-Ebene

Rahmen Möglicher Wert Beschreibung
cluster.routing.allocation.enable
alle Dieser Standardwert ermöglicht die Zuweisung von Shards für alle Arten von Shards.
Vorwahlen Dies ermöglicht die Zuweisung von Shards nur für primäre Shards.
new_primaries Dies ermöglicht die Zuweisung von Shards nur für primäre Shards für neue Indizes.
keiner Dies erlaubt keine Shard-Zuweisungen.
cluster.routing.allocation .node_concurrent_recoveries Numerischer Wert (standardmäßig 2) Dies schränkt die Anzahl der gleichzeitigen Shard-Wiederherstellung ein.
cluster.routing.allocation .node_initial_primaries_recoveries Numerischer Wert (standardmäßig 4) Dies beschränkt die Anzahl der parallelen anfänglichen primären Wiederherstellungen.
cluster.routing.allocation .same_shard.host Boolescher Wert (standardmäßig false) Dies schränkt die Zuweisung von mehr als einem Replikat desselben Shards auf demselben physischen Knoten ein.
indices.recovery.concurrent _streams Numerischer Wert (standardmäßig 3) Dies steuert die Anzahl offener Netzwerkströme pro Knoten zum Zeitpunkt der Shard-Wiederherstellung von Peer-Shards.
indices.recovery.concurrent _small_file_streams Numerischer Wert (standardmäßig 2) Dies steuert die Anzahl offener Streams pro Knoten für kleine Dateien mit einer Größe von weniger als 5 MB zum Zeitpunkt der Shard-Wiederherstellung.
cluster.routing.rebalance.enable
alle Dieser Standardwert ermöglicht das Ausgleichen für alle Arten von Shards.
Vorwahlen Dies ermöglicht das Ausgleichen von Shards nur für primäre Shards.
Repliken Dies ermöglicht das Ausgleichen von Shards nur für Replikatshards.
keiner Dies erlaubt keine Art von Shard-Balancing.
cluster.routing.allocation .allow_rebalance
immer Dieser Standardwert ermöglicht immer eine Neuausrichtung.
indices_primaries _active Dies ermöglicht einen Neuausgleich, wenn alle primären Shards im Cluster zugewiesen sind.
Indices_all_active Dies ermöglicht einen Neuausgleich, wenn alle primären und Replikat-Shards zugewiesen sind.
cluster.routing.allocation.cluster _concurrent_rebalance Numerischer Wert (standardmäßig 2) Dies schränkt die Anzahl des gleichzeitigen Shard-Ausgleichs im Cluster ein.
cluster.routing.allocation .balance.shard Float-Wert (standardmäßig 0,45f) Dies definiert den Gewichtsfaktor für Shards, die jedem Knoten zugewiesen sind.
cluster.routing.allocation .balance.index Float-Wert (standardmäßig 0,55f) Dies definiert das Verhältnis der Anzahl der Shards pro Index, die einem bestimmten Knoten zugewiesen sind.
cluster.routing.allocation .balance.threshold Nicht negativer Float-Wert (standardmäßig 1.0f) Dies ist der minimale Optimierungswert der Operationen, die ausgeführt werden sollen.

Festplattenbasierte Shard-Zuordnung

Rahmen Möglicher Wert Beschreibung
cluster.routing.allocation.disk.threshold_enabled Boolescher Wert (standardmäßig true) Dies aktiviert und deaktiviert den Festplattenzuweisungsentscheider.
cluster.routing.allocation.disk.watermark.low Zeichenfolgenwert (standardmäßig 85%) Dies bedeutet die maximale Nutzung der Festplatte. Nach diesem Zeitpunkt kann dieser Festplatte kein anderer Shard mehr zugewiesen werden.
cluster.routing.allocation.disk.watermark.high Zeichenfolgenwert (standardmäßig 90%) Dies gibt die maximale Nutzung zum Zeitpunkt der Zuweisung an. Wenn dieser Punkt zum Zeitpunkt der Zuweisung erreicht ist, weist Elasticsearch diesen Shard einer anderen Festplatte zu.
cluster.info.update.interval Zeichenfolgenwert (standardmäßig 30s) Dies ist das Intervall zwischen den Überprüfungen der Festplattennutzung.
cluster.routing.allocation.disk.include_relocations Boolescher Wert (standardmäßig true) Hiermit wird entschieden, ob die aktuell zugewiesenen Shards bei der Berechnung der Festplattennutzung berücksichtigt werden sollen.

Entdeckung

Dieses Modul hilft einem Cluster, den Status aller darin enthaltenen Knoten zu ermitteln und aufrechtzuerhalten. Der Status des Clusters ändert sich, wenn ein Knoten hinzugefügt oder daraus gelöscht wird. Die Einstellung für den Clusternamen wird verwendet, um einen logischen Unterschied zwischen verschiedenen Clustern zu erzeugen. Es gibt einige Module, mit denen Sie die von Cloud-Anbietern bereitgestellten APIs verwenden können.

  • Azure-Erkennung
  • EC2-Entdeckung
  • Google Compute Engine Discovery
  • Zen-Entdeckung

Tor

Dieses Modul behält den Clusterstatus und die Shard-Daten bei einem vollständigen Neustart des Clusters bei. Im Folgenden sind die statischen Einstellungen dieses Moduls aufgeführt:

Rahmen Möglicher Wert Beschreibung
gateway.expected_nodes numerischer Wert (standardmäßig 0) Die Anzahl der Knoten, die sich voraussichtlich im Cluster befinden, um lokale Shards wiederherzustellen.
gateway.expected_master_nodes numerischer Wert (standardmäßig 0) Die Anzahl der Masterknoten, die sich voraussichtlich vor Beginn der Wiederherstellung im Cluster befinden.
gateway.expected_data_nodes numerischer Wert (standardmäßig 0) Die Anzahl der Datenknoten, die im Cluster vor dem Start der Wiederherstellung erwartet werden.
gateway.recover_after_time Zeichenfolgenwert (standardmäßig 5 m) Dies ist das Intervall zwischen den Überprüfungen der Festplattennutzung.
cluster.routing.allocation. disk.include_relocations Boolescher Wert (standardmäßig true)

Dies gibt die Zeit an, für die der Wiederherstellungsprozess unabhängig von der Anzahl der im Cluster verbundenen Knoten auf den Start wartet.

gateway.recover_ after_nodes
gateway.recover_after_master_nodes
gateway.recover_after_data_nodes

HTTP

Dieses Modul verwaltet die Kommunikation zwischen dem HTTP-Client und den Elasticsearch-APIs. Dieses Modul kann deaktiviert werden, indem der Wert von http.enabled in false geändert wird.

Im Folgenden sind die Einstellungen (in elasticsearch.yml konfiguriert) zur Steuerung dieses Moduls aufgeführt:

S.No. Einstellung & Beschreibung
1

http.port

Dies ist ein Port für den Zugriff auf Elasticsearch und reicht von 9200 bis 9300.

2

http.publish_port

Dieser Port ist für http-Clients vorgesehen und auch im Falle einer Firewall nützlich.

3

http.bind_host

Dies ist eine Hostadresse für den http-Dienst.

4

http.publish_host

Dies ist eine Hostadresse für den http-Client.

5

http.max_content_length

Dies ist die maximale Größe des Inhalts in einer http-Anforderung. Der Standardwert ist 100 MB.

6

http.max_initial_line_length

Dies ist die maximale Größe der URL und ihr Standardwert ist 4 KB.

7

http.max_header_size

Dies ist die maximale Größe des http-Headers und der Standardwert ist 8 KB.

8

http.compression

Dies aktiviert oder deaktiviert die Unterstützung für die Komprimierung und der Standardwert ist false.

9

http.pipelinig

Dies aktiviert oder deaktiviert das HTTP-Pipelining.

10

http.pipelining.max_events

Dies beschränkt die Anzahl der Ereignisse, die vor dem Schließen einer HTTP-Anforderung in die Warteschlange gestellt werden sollen.

Indizes

Dieses Modul verwaltet die Einstellungen, die global für jeden Index festgelegt werden. Die folgenden Einstellungen beziehen sich hauptsächlich auf die Speichernutzung -

Leistungsschalter

Dies wird verwendet, um zu verhindern, dass der Betrieb einen OutOfMemroyError verursacht. Die Einstellung beschränkt hauptsächlich die Größe des JVM-Heapspeichers. Beispiel: Die Einstellung indices.breaker.total.limit, die standardmäßig 70% des JVM-Heaps beträgt.

Felddaten-Cache

Dies wird hauptsächlich beim Aggregieren in einem Feld verwendet. Es wird empfohlen, über genügend Speicher zu verfügen, um ihn zuzuweisen. Die für den Felddaten-Cache verwendete Speichermenge kann mithilfe der Einstellung indices.fielddata.cache.size gesteuert werden.

Knotenabfrage-Cache

Dieser Speicher wird zum Zwischenspeichern der Abfrageergebnisse verwendet. Dieser Cache verwendet die LRU-Räumungsrichtlinie (Least Recent Used). Die Einstellung Indices.queries.cahce.size steuert die Speichergröße dieses Caches.

Indizierungspuffer

Dieser Puffer speichert die neu erstellten Dokumente im Index und löscht sie, wenn der Puffer voll ist. Wenn Sie wie indices.memory.index_buffer_size festlegen, wird die Menge des für diesen Puffer zugewiesenen Heaps gesteuert.

Shard-Anforderungs-Cache

In diesem Cache werden die lokalen Suchdaten für jeden Shard gespeichert. Der Cache kann während der Erstellung des Index aktiviert oder durch Senden eines URL-Parameters deaktiviert werden.

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

Wiederherstellung der Indizes

Es steuert die Ressourcen während des Wiederherstellungsprozesses. Das Folgende sind die Einstellungen -

Rahmen Standardwert
indices.recovery.concurrent_streams 3
indices.recovery.concurrent_small_file_streams 2
indices.recovery.file_chunk_size 512 kb
indices.recovery.translog_ops 1000
indices.recovery.translog_size 512 kb
indices.recovery.compress wahr
indices.recovery.max_bytes_per_sec 40mb

TTL-Intervall

Das TTL-Intervall (Time to Live) definiert die Zeit eines Dokuments, nach der das Dokument gelöscht wird. Im Folgenden sind die dynamischen Einstellungen zur Steuerung dieses Prozesses aufgeführt:

Rahmen Standardwert
indices.ttl.interval 60er Jahre
indices.ttl.bulk_size 1000

Knoten

Jeder Knoten hat die Option, Datenknoten zu sein oder nicht. Sie können diese Eigenschaft ändern, indem Sie sie ändernnode.dataRahmen. Einstellen des Wertes alsfalse definiert, dass der Knoten kein Datenknoten ist.