Elasticsearch-Installations- und Konfigurationshandbuch
Elasticsearch ist eine Plattform für die verteilte Suche und Analyse von Daten in Echtzeit. Sie ist aufgrund ihrer Benutzerfreundlichkeit, leistungsstarken Funktionen und Skalierbarkeit eine beliebte Wahl.
Dieser Artikel führt Sie durch die Installation von Elasticsearch 8.x, die Konfiguration für Ihre Anforderungen, die Sicherung Ihrer Installation und den Einstieg in die Arbeit mit Ihrem Elasticsearch-Server.
Voraussetzungen
Bevor Sie dieses Tutorial befolgen, benötigen Sie:
- Einen Rocky Linux 9-Server mit 2 GB RAM und 2 CPUs, eingerichtet mit einem Nicht-Root-Benutzer mit sudo-Rechten. Dies können Sie durch die Anleitung zur Erstinstallation von Rocky Linux 9 erreichen.
- Elasticsearch kann relativ hohe Anforderungen haben, da es sich standardmäßig etwa 1 GB RAM zuweist. Beachten Sie daher, dass Sie möglicherweise Swap-Speicher in einer speicherbeschränkten Umgebung aktivieren müssen. Der benötigte Speicherplatz für CPU, RAM und Speicher Ihres Elasticsearch-Servers hängt davon ab, wie viele Datensätze Sie generieren.
Schritt 1 — Elasticsearch installieren und konfigurieren
Bevor Sie Elasticsearch installieren, sollten Sie sicherstellen, dass Sie einen geeigneten Texteditor installiert haben. Der Standard-Texteditor, der mit Rocky Linux 9 geliefert wird, ist vi
. vi
ist ein äußerst leistungsstarker Texteditor, kann aber für Benutzer ohne Erfahrung etwas schwer verständlich sein. Sie können einen benutzerfreundlicheren Editor wie nano
installieren, um die Bearbeitung von Konfigurationsdateien auf Ihrem Rocky Linux 9-Server zu erleichtern:
sudo dnf install nano -y
Nun können Sie mit der Installation von Elasticsearch fortfahren. Die Elasticsearch-Komponenten sind nicht in den Standardpaket-Repositorys von Rocky verfügbar. Stattdessen können sie aus den von der Elasticsearch-Organisation bereitgestellten Repositories eingebunden werden.
Verwenden Sie zunächst das rpm
-Pakettool, um den Schlüssel von elastic.co zu importieren:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Verwenden Sie anschließend nano
oder Ihren bevorzugten Texteditor, um eine Datei namens elasticsearch.repo
im Verzeichnis /etc/yum.repos.d/
zu erstellen, damit Ihr Paketmanager auf das Elasticsearch-Repository zugreifen kann:
sudo nano /etc/yum.repos.d/elasticsearch.repo
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
Der Abschnitt gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
in der Datei weist Ihren Paketmanager an, den heruntergeladenen Schlüssel zu verwenden, um Repository- und Dateiinformationen für Elasticsearch-Pakete zu überprüfen.
Speichern und schließen Sie die Datei. Wenn Sie nano
verwenden, können Sie mit Strg+X
speichern und beenden und bei Aufforderung Y
und anschließend Eingabe
drücken.
Installieren Sie abschließend Elasticsearch mit dem dnf
-Paketmanager:
sudo dnf install --enablerepo=elasticsearch elasticsearch
Drücken Sie y
, wenn Sie zur Bestätigung der Installation aufgefordert werden.
Ein Teil der Elasticsearch-Installationsausgabe sollte Sicherheitsinformationen zur automatischen Konfiguration und vor allem das automatisch generierte Elasticsearch-Admin-Passwort enthalten:
--------------------------- Sicherheitsinformationen zur Autokonfiguration ------------------------------
Authentifizierung und Autorisierung sind aktiviert.
TLS für die Transport- und HTTP-Ebenen ist aktiviert und konfiguriert.
Das generierte Passwort für den integrierten Superuser elastic
lautet: CH77_qG8ji8QCxwUCr3w
Notieren Sie sich dieses Passwort, da Sie es später in diesem Tutorial verwenden und zur Erstellung weiterer Elasticsearch-Benutzer benötigen werden. Elasticsearch ist jetzt installiert und bereit zur Konfiguration.
Schritt 2 — Elasticsearch konfigurieren
Um Elasticsearch zu konfigurieren, bearbeiten Sie die Hauptkonfigurationsdatei elasticsearch.yml
, in der die meisten Konfigurationsoptionen gespeichert sind. Diese Datei befindet sich im Verzeichnis /etc/elasticsearch
.
Öffnen Sie die Konfigurationsdatei von Elasticsearch mit nano
oder Ihrem bevorzugten Texteditor:
sudo nano /etc/elasticsearch/elasticsearch.yml
Hinweis: Die Konfigurationsdatei von Elasticsearch ist im YAML-Format, was bedeutet, dass Sie die Einrückungssyntax beibehalten müssen. Achten Sie darauf, keine zusätzlichen Leerzeichen hinzuzufügen, während Sie diese Datei bearbeiten.
Die Datei elasticsearch.yml
bietet Konfigurationsoptionen für Ihren Cluster, Knoten, Pfade, Speicher, Netzwerk, Discovery und Gateway. Die meisten dieser Optionen sind bereits in der Datei vorkonfiguriert, aber Sie können sie je nach Bedarf ändern. Für die Konfiguration eines Einzelservers passen Sie nur die Einstellungen für den Netzwerkknoten an.
Elasticsearch lauscht auf Port 9200 für Datenverkehr von überall. Dies ist in Elasticsearch 8.x weniger problematisch als in früheren Versionen, da Elasticsearch jetzt standardmäßig eine Authentifizierung erfordert. Dennoch sollten Sie den externen Zugriff auf Ihre Elasticsearch-Instanz einschränken, um zu verhindern, dass Außenstehende Ihre Daten lesen oder Ihren Elasticsearch-Cluster über die REST-API herunterfahren. Um den Zugriff einzuschränken, suchen Sie die Zeile, die network.host
angibt, heben Sie die Kommentierung auf, indem Sie das #
am Anfang der Zeile entfernen, und ersetzen Sie den Wert durch localhost
, sodass sie wie folgt aussieht:
# ---------------------------------- Netzwerk -----------------------------------
#
# Binden Sie die Adresse an eine bestimmte IP (IPv4 oder IPv6):
#
network.host: localhost
Wenn Sie localhost
angeben, lauscht Elasticsearch auf allen Schnittstellen und gebundenen IP-Adressen. Wenn Sie möchten, dass es nur auf einer bestimmten Schnittstelle lauscht, können Sie deren IP anstelle von localhost
angeben. Speichern und schließen Sie die Datei elasticsearch.yml
. Wenn Sie nano
verwenden, können Sie mit Strg+X
speichern und beenden und bei Aufforderung Y
und anschließend Eingabe
drücken.
Dies sind die Mindestkonfigurationen, die Sie benötigen, um Elasticsearch zu verwenden. Nun können Sie Elasticsearch zum ersten Mal starten.
Starten Sie den Elasticsearch-Dienst mit systemctl
. Geben Sie Elasticsearch ein paar Momente, um hochzufahren. Andernfalls können Fehler auftreten, die darauf hinweisen, dass keine Verbindung hergestellt werden kann.
sudo systemctl start elasticsearch
Führen Sie als Nächstes den folgenden Befehl aus, um Elasticsearch so einzustellen, dass es bei jedem Start Ihres Servers automatisch gestartet wird:
sudo systemctl enable elasticsearch
Mit Elasticsearch, das beim Start aktiviert ist, fahren wir mit dem nächsten Schritt fort, um über Sicherheit zu sprechen.
Schritt 3 — Elasticsearch sichern
Schritt 3 — Elasticsearch sichern
Elasticsearch kann von jedem gesteuert werden, der Zugriff auf die HTTP-API hat. Dies ist nicht unbedingt ein Sicherheitsrisiko, da Sie Elasticsearch bereits so konfiguriert haben, dass es nur auf localhost
lauscht, und Elasticsearch 8+ standardmäßig ein Admin-Passwort einrichtet.
Falls Sie Remotezugriff auf die HTTP-API erlauben müssen, können Sie die Netzwerkaussetzung mit firewalld
einschränken. Diese Firewall sollte bereits aktiviert sein, wenn Sie die Schritte im Tutorial zur Erstinstallation von Rocky Linux 9 befolgt haben. Elasticsearch läuft auf Port 9200, sodass Sie bei Bedarf ein Firewall-Profil erstellen können, das Port 9200 öffnet oder einschränkt.
Falls Sie zusätzlichen Schutz investieren möchten, bietet Elasticsearch das kommerzielle Shield-Plugin zum Kauf an.
Schritt 4 — Elasticsearch testen
Elasticsearch sollte mittlerweile auf Port 9200 laufen. Sie können dies testen, indem Sie eine Standard-HTTP-GET-Anfrage an localhost:9200
mit curl
senden. Ab Elasticsearch 8.x erfordert die Elasticsearch-API standardmäßig HTTPS-Authentifizierung, sodass Sie das bereitgestellte Zertifikat mit dem Argument --cacert
in die Anfrage einbinden können. Schließlich fügen Sie das Argument -u elastic
hinzu, um den Standard-Admin-Benutzernamen elastic
anzugeben.
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200
Sie werden aufgefordert, das Admin-Passwort einzugeben, das Sie während der Installation erhalten haben. Nach der Authentifizierung sollten Sie die folgende Antwort erhalten:
{
"name" : "elasticrocky",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "_hb4dLuuR-ipiloXHT_AMw",
"version" : {
"number" : "8.5.3",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "4ed5ee9afac63de92ec98f404ccbed7d3ba9584e",
"build_date" : "2022-12-05T18:22:22.226119656Z",
"build_snapshot" : false,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
Falls Sie eine ähnliche Antwort wie die obige erhalten, funktioniert Elasticsearch ordnungsgemäß. Falls nicht, stellen Sie sicher, dass Sie die Installationsanweisungen korrekt befolgt haben und Elasticsearch ausreichend Zeit zum Starten gegeben haben.
Um Elasticsearch gründlicher zu prüfen, versuchen Sie, den _nodes
-Endpunkt abzufragen, und fügen Sie ?pretty
am Ende der Abfrage hinzu, um menschenlesbares Textformat zu erhalten:
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200/_nodes?pretty
Sie erhalten eine detaillierte Antwort mit Informationen zu den Knoten, dem Cluster und den Konfigurationen.
Schritt 5 — Elasticsearch verwenden
Um Elasticsearch zu verwenden, fügen wir zunächst einige Daten hinzu. Elasticsearch verwendet eine RESTful-API, die auf die üblichen CRUD-Befehle reagiert: Erstellen, Lesen, Aktualisieren und Löschen. Um Daten an die API zu senden, verwenden Sie erneut curl
, diesmal jedoch mit einer PUT-Anfrage, indem Sie -X PUT
angeben und einige JSON-formatierte Daten über die Befehlszeile mit -d
einfügen.
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X PUT "https://localhost:9200/test/_doc/1?pretty" -k -H 'Content-Type: application/json' -d '{"counter" : 1, "tags" : ["red"]}'
Sie sollten die folgende Antwort erhalten:
{
"_index" : "test",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
Mit curl
haben Sie eine HTTP-PUT-Anfrage an den Elasticsearch-Server gesendet. Die URI der Anfrage war /test/_doc/1
mit mehreren Parametern:
test
ist der Index der Daten in Elasticsearch._doc
ist der Typ.1
ist die ID unseres Eintrags unter dem obigen Index und Typ.
Sie können diesen ersten Eintrag mit einer HTTP-GET-Anfrage abrufen:
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X GET "https://localhost:9200/test/_doc/1?pretty" -k -H 'Content-Type: application/json'
Das Ergebnis sollte wie folgt aussehen:
{
"_index" : "test",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"counter" : 1,
"tags" : [
"red"
]
}
}
Um einen vorhandenen Eintrag zu ändern, können Sie eine HTTP-PUT-Anfrage verwenden:
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X PUT "https://localhost:9200/test/_doc/1?pretty" -k -H 'Content-Type: application/json' -d '{"counter" : 1, "tags" : ["blue"]}'
Elasticsearch sollte die erfolgreiche Änderung wie folgt bestätigen:
{
"_index" : "test",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
In diesem Beispiel haben wir den Tag des ersten Eintrags in "blue"
geändert. Die Versionsnummer wurde automatisch auf 2
erhöht.
Sie haben möglicherweise bemerkt, dass das Argument ?pretty
in den obigen Anfragen enthalten ist. Es fügt eine Formatierung hinzu, sodass jedes Datenfeld in einer neuen Zeile geschrieben werden kann. Ohne ?pretty
wird die Elasticsearch-Ausgabe ohne Zeilenumbrüche oder Einrückungen zurückgegeben. Dies ist für die API-Kommunikation in Ordnung, aber schwerer in der Befehlszeilenausgabe zu lesen.
Sie haben nun Daten in Elasticsearch hinzugefügt und abgerufen. Um mehr über die anderen Operationen zu erfahren, lesen Sie bitte die API-Dokumentation.
Fazit
Sie haben Elasticsearch installiert, konfiguriert und angefangen, es zu verwenden. Um weitere Funktionen von Elasticsearch zu erkunden, lesen Sie bitte die offizielle Elasticsearch-Dokumentation.