Einrichten Ihres ersten Elasticsearch-Clusters für die Entwicklung
Der Einstieg in Elasticsearch kann aufgrund seiner verteilten Natur entmutigend wirken, aber die Einrichtung eines Basisclusters für die lokale Entwicklung ist unkompliziert. Diese Anleitung führt Sie durch die wesentlichen Schritte, die erforderlich sind, um schnell einen funktionsfähigen Elasticsearch-Cluster bereitzustellen und zu konfigurieren, unabhängig davon, ob Sie sich für ein einfaches Einzelknoten-Setup oder eine repräsentativere Mehrknotenumgebung entscheiden. Das Verständnis dieser anfänglichen Konfiguration ist entscheidend für die nahtlose Indizierung, Abfrage und Erkundung Ihrer Daten mithilfe der leistungsstarken Such- und Analysefunktionen von Elasticsearch.
Wir konzentrieren uns auf die Kernkonfigurationsaspekte, die für eine Entwicklungsumgebung erforderlich sind, um sicherzustellen, dass Sie eine solide Grundlage haben, bevor Sie zu Produktionsüberlegungen übergehen.
Voraussetzungen
Stellen Sie vor Beginn sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Java Development Kit (JDK): Elasticsearch erfordert ein kompatibles JDK, das auf Ihrem System installiert ist. Elasticsearch-Versionen 7.x und höher benötigen typischerweise JDK 11 oder höher.
- Elasticsearch herunterladen: Besorgen Sie sich die Binärdistribution Ihrer gewünschten Elasticsearch-Version von der offiziellen Elastic-Website.
- Systemressourcen: Für grundlegende Entwicklungstests sind im Allgemeinen 2 GB RAM ausreichend, obwohl für Mehrknotentests mehr empfohlen wird.
Schritt 1: Herunterladen und Extrahieren von Elasticsearch
Sobald der Download abgeschlossen ist (normalerweise als .zip- oder .tar.gz-Datei), extrahieren Sie das Archiv in ein Verzeichnis, in dem Sie Ihre Clusterdateien speichern möchten (z. B. ~/elasticsearch-8.12.0). Dieses Verzeichnis wird als Elasticsearch Home Directory bezeichnet.
Schritt 2: Konfigurieren eines Einzelknoten-Clusters (Standard für die Entwicklung)
Standardmäßig versucht Elasticsearch bei der ersten Ausführung, als Einzelknoten-Cluster zu starten. Moderne Versionen erfordern jedoch häufig eine explizite Konfiguration, insbesondere in Bezug auf Sicherheits- und Speichereinstellungen, selbst für die lokale Entwicklung.
Die Konfigurationsdateien befinden sich im Verzeichnis config/ innerhalb Ihres Elasticsearch Home.
Wesentliche Konfiguration (config/elasticsearch.yml)
Die Hauptkonfigurationsdatei ist elasticsearch.yml. Für ein lokales Einzelknoten-Setup müssen Sie mindestens den Clusternamen und den Knotennamen konfigurieren.
# Cluster-Konfiguration
cluster.name: dev-cluster
# Knotenkonfiguration
node.name: node-1
# Netzwerkeinstellungen (Für die Entwicklung 127.0.0.1 verwenden)
network.host: 127.0.0.1
# HTTP-Port (Standard ist 9200)
http.port: 9200
# Wichtig für die Entwicklung: Sicherheit zunächst deaktivieren (In der Produktion mit Vorsicht verwenden!)
xpack.security.enabled: false
Warnung zur Sicherheit: Das Deaktivieren von
xpack.security.enabledist bei der anfänglichen Einrichtung der Entwicklung üblich, um das Testen zu vereinfachen. Führen Sie diese Konfiguration niemals in einer öffentlich zugänglichen Umgebung aus. Für moderne Elasticsearch-Versionen (7.x+) müssen Sie häufig zuerst Setup-Befehle ausführen, um initiale Passwörter zu generieren, falls die Sicherheit aktiviert bleibt.
Starten des Einzelknotens
Navigieren Sie in das Stammverzeichnis Ihres extrahierten Ordners und führen Sie das entsprechende Startskript aus. Unter Linux/macOS:
./bin/elasticsearch
Unter Windows (mithilfe von PowerShell):
.in\elasticsearch.bat
Warten Sie, bis die Protokolle anzeigen, dass der Knoten erfolgreich gestartet wurde, normalerweise mit einer Meldung wie „started“.
Schritt 3: Überprüfen des Cluster-Status
Sobald der Prozess läuft, können Sie den Cluster-Status mithilfe von curl gegen den Standard-HTTP-Port (9200) überprüfen.
Überprüfung der Cluster-Integrität
Dieser Befehl überprüft die allgemeine Integrität des Clusters:
curl -X GET "http://localhost:9200/_cat/health?v"
Erwarteter Ausgabeausschnitt:
epoch timestamp cluster status node.total node.data shards prio initialized
1678886400 10:00:00 dev-cluster green 1 1 0 0 1
Das Feld status sollte green sein, was auf einen gesunden Einzelknoten-Cluster hindeutet.
Überprüfen der Knoteninformationen
Sie können auch die Knoteninformationen überprüfen:
curl -X GET "http://localhost:9200/_cat/nodes?v"
Schritt 4: Einrichten eines Mehrknoten-Clusters (Für realistische Tests)
Für realistischere Entwicklungs- oder Testzwecke der Shard-Zuweisung benötigen Sie mindestens zwei Knoten. Dies erfordert die Ausführung mehrerer separater Elasticsearch-Instanzen mit jeweils unterschiedlichen Konfigurationen.
Verzeichnisstruktur
Erstellen Sie separate Verzeichnisse für jeden Knoten in Ihrem Hauptarbeitsbereich (z. B. es_data/node1, es_data/node2). Kopieren Sie die Basis-Elasticsearch-Distribution in jedes dieser Verzeichnisse oder verknüpfen Sie sie mit der Hauptinstallation.
Unterschiede in der Knotenausführung
Erstellen Sie für jeden Knoten eine eindeutige Datei config/elasticsearch.yml:
Knoten 1 Konfiguration (es_data/node1/config/elasticsearch.yml)
cluster.name: dev-cluster
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
path.data: node1_data # Eindeutiger Datenpfad
xpack.security.enabled: false
# Diese Zeile teilt Knoten 1 mit, wie andere Mitglieder gefunden werden
cluster.initial_master_nodes: ["node-1", "node-2"]
Knoten 2 Konfiguration (es_data/node2/config/elasticsearch.yml)
cluster.name: dev-cluster
node.name: node-2
network.host: 127.0.0.1
http.port: 9201 # Muss einen anderen HTTP-Port verwenden
path.data: node2_data # Eindeutiger Datenpfad
xpack.security.enabled: false
# Diese Zeile teilt Knoten 2 mit, wie andere Mitglieder gefunden werden
cluster.initial_master_nodes: ["node-1", "node-2"]
Starten des Mehrknoten-Clusters
- Knoten 1 starten: Navigieren Sie zu
es_data/node1und führen Sie./bin/elasticsearchaus. - Knoten 2 starten: Navigieren Sie zu
es_data/node2und führen Sie./bin/elasticsearchaus.
Überprüfen des Mehrknoten-Clusters
Überprüfen Sie die Knotenanzahl mithilfe der API gegen einen beliebigen laufenden HTTP-Port (z. B. 9200):
curl -X GET "http://localhost:9200/_cat/nodes?v"
Erwarteter Ausgabeausschnitt:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1 15 50 0 0.01 0.02 0.01 mdi * node-1
127.0.0.1 16 51 0 0.00 0.01 0.01 mdi - node-2
Wenn Sie zwei Einträge unter name sehen, ist Ihr Mehrknoten-Cluster korrekt eingerichtet.
Best Practices für Entwicklungsumgebungen
- Dedizierte Datenpfade verwenden: Konfigurieren Sie
path.dataimmer explizit für jeden Knoten, insbesondere bei Mehrknoten-Setups, um eine versehentliche Datenkontamination zwischen Instanzen zu verhindern. - Ephemere Ports: Verwenden Sie eindeutige HTTP-Ports (
http.port) für jeden Knoten, damit diese sich bei der lokalen Ausführung nicht gegenseitig stören. - Speicherzuordnung (Memory Locking): Stellen Sie für die Entwicklung sicher, dass Sie nicht an die Heap-Größenbeschränkungen stoßen. Wenn Startfehler im Zusammenhang mit dem Speicher auftreten, müssen Sie möglicherweise die JVM-Heap-Größe in der Datei
jvm.optionsanpassen (obwohl die Standardwerte für einfache Tests normalerweise ausreichen).
Nächste Schritte: Indizierung von Daten
Nachdem Ihr Cluster läuft, ist der nächste logische Schritt die Erstellung eines Index und der Mapping-Einstellungen. Um beispielsweise einen einfachen Index namens products zu erstellen:
curl -X PUT "http://localhost:9200/products?pretty"
Dieses grundlegende Setup ermöglicht es Ihnen, mit der Interaktion mit Elasticsearch mithilfe von Clientbibliotheken oder Kibana zu beginnen.