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 |
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.