Installations- und Konfigurationsanleitung für Elasticsearch
Elasticsearch ist eine Plattform für die verteilte Suche und Analyse von Daten in Echtzeit. Es ist aufgrund seiner 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 ersten Einsatz Ihres Elasticsearch-Servers.
Voraussetzungen
Bevor Sie dieses Tutorial befolgen, benötigen Sie:
- Einen Rocky Linux 8 Server mit 2 GB RAM und 2 CPUs, der mit einem nicht-root-sudo Benutzer eingerichtet ist. Dies können Sie durch die Initial Server Setup-Anleitung für Rocky Linux 8 erreichen.
- Elasticsearch kann relativ hohe Anforderungen haben, da es sich standardmäßig etwa 1 GB RAM zuweist. Beachten Sie, dass Sie möglicherweise Swap aktivieren müssen, wenn Sie eine speicherbeschränkte Umgebung nutzen. Der benötigte CPU-, RAM- und Speicherplatz 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 Standardtexteditor von Rocky Linux 8 ist vi. Vi ist ein äußerst leistungsfähiger Texteditor, kann jedoch für unerfahrene Benutzer etwas umständlich sein. Sie möchten möglicherweise einen benutzerfreundlicheren Editor wie nano installieren, um Konfigurationsdateien auf Ihrem Rocky Linux 8-Server zu bearbeiten:
sudo dnf install nano -y
Nun können Sie mit der Installation von Elasticsearch fortfahren. Die Elasticsearch-Komponenten sind nicht in den Standard-Paket-Repositories von Rocky Linux verfügbar. Sie können stattdessen aus von Elasticsearch verwalteten Repositories bezogen werden.
Alle Pakete sind mit dem Elasticsearch-Signaturschlüssel signiert, um Ihr System vor Paket-Spoofing zu schützen. Pakete, die mit diesem Schlüssel authentifiziert wurden, werden von Ihrem Paketmanager als vertrauenswürdig eingestuft. In diesem Schritt importieren Sie den öffentlichen GPG-Schlüssel von Elasticsearch und fügen die Elastic-Paketquellenliste hinzu, um Elasticsearch zu installieren.
Beginnen Sie mit dem Import des Schlüssels von elastic.co mithilfe des rpm-Pakettools:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Erstellen Sie anschließend mithilfe von nano oder Ihrem bevorzugten Texteditor eine Datei namens elasticsearch.repo im Verzeichnis /etc/yum.repos.d/, damit Ihr Paketmanager eine Verbindung zum Elasticsearch-Repository herstellen kann:
sudo nano /etc/yum.repos.d/elasticsearch.repo
Fügen Sie den folgenden Inhalt in die Datei ein:
[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 Datei-Informationen für Elasticsearch-Pakete zu verifizieren.
Speichern und schließen Sie die Datei. Wenn Sie nano verwenden, können Sie dies mit Ctrl+X und anschließend bei Aufforderung mit Y und Enter tun.
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 Sicherheitsautokonfigurationsinformationen und, am wichtigsten, das automatisch generierte Elasticsearch-Admin-Passwort enthalten:
--------------------------- Sicherheitsautokonfigurationsinformationen ------------------------------
Die 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 werden und es für die Erstellung weiterer Elasticsearch-Benutzer benötigen. Elasticsearch ist nun 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, wenn 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 in der Datei vorkonfiguriert, können jedoch je nach Bedarf angepasst werden. Für die Konfiguration eines Einzelservers passen Sie nur die Einstellungen für den Netzwerk-Host an.
Elasticsearch lauscht standardmäßig auf allen Schnittstellen auf Port 9200. 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 Zugriff auf Ihre Elasticsearch-Instanz einschränken, um zu verhindern, dass Dritte Ihre Daten lesen oder Ihren Elasticsearch-Cluster über die REST-API herunterfahren. Um den Zugriff einzuschränken, finden Sie die Zeile, die network.host
angibt, entfernen Sie das #
am Anfang der Zeile und ersetzen Sie den Wert durch localhost
, sodass sie wie folgt aussieht:
# ---------------------------------- Netzwerk -----------------------------------
#
# Setzen Sie die Bind-Adresse auf eine bestimmte IP (IPv4 oder IPv6):
#
network.host: localhost
...
Die Angabe von localhost
ermöglicht Elasticsearch, auf allen Schnittstellen und gebundenen IPs zu lauschen. Wenn Sie möchten, dass Elasticsearch nur auf einer bestimmten Schnittstelle lauscht, können Sie deren IP-Adresse anstelle von localhost
angeben. Speichern und schließen Sie die Datei elasticsearch.yml
. Wenn Sie nano verwenden, können Sie mit Ctrl+X, dann bei Aufforderung mit Y und anschließend Enter speichern und beenden.
Dies sind die Mindestkonfigurationen, die erforderlich sind, 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 Augenblicke Zeit zum Starten. Andernfalls können Fehler auftreten, dass keine Verbindung hergestellt werden kann:
sudo systemctl start elasticsearch
Führen Sie anschließend den folgenden Befehl aus, um Elasticsearch so zu konfigurieren, dass es bei jedem Serverstart automatisch startet:
sudo systemctl enable elasticsearch
Nachdem Elasticsearch so konfiguriert wurde, dass es beim Start automatisch aktiviert wird, fahren wir mit dem nächsten Schritt fort, um die Sicherheit zu besprechen.
Schritt 3 – Elasticsearch absichern
Elasticsearch kann von jedem gesteuert werden, der auf die HTTP-API zugreifen kann. 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 den Fernzugriff auf die HTTP-API zulassen müssen, können Sie die Netzwerkaussetzung mit firewalld
begrenzen. Diese Firewall sollte bereits aktiviert sein, wenn Sie die Schritte im vorausgehenden Initial Server Setup für Rocky Linux 8 befolgt haben. Elasticsearch läuft auf Port 9200. Wenn Sie selektiven externen Zugriff benötigen, können Sie ein Firewall-Profil erstellen, das diesen Port ö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 nun 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. Daher können Sie ihr bereitgestelltes Zertifikat in die Anfrage einfügen, indem Sie das Argument --cacert
verwenden. 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 bei 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"
}
Wenn Sie eine ähnliche Antwort wie oben erhalten, funktioniert Elasticsearch ordnungsgemäß. Wenn nicht, stellen Sie sicher, dass Sie die Installationsanweisungen korrekt befolgt haben und Elasticsearch genügend Zeit zum vollständigen Starten gegeben haben.
Um eine gründlichere Überprüfung von Elasticsearch durchzuführen, versuchen Sie, den Endpunkt _nodes
abzufragen, und fügen Sie ?pretty
an das Ende der Abfrage hinzu, um eine menschenlesbare Textformatierung zu erhalten:
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200/_nodes?pretty
Sie sollten eine Ausgabe ähnlich der folgenden erhalten:
{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "elasticsearch",
"nodes" : {
"7TgeSgV2Tma0quqd6Mw6hQ" : {
...
}
}
}
Auf diese Weise können Sie alle aktuellen Einstellungen für den Knoten, den Cluster, die Anwendungspfade, die Module und mehr überprüfen.
Schritt 5 – Elasticsearch verwenden
Um Elasticsearch zu verwenden, lassen Sie uns zunächst einige Daten hinzufügen. 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
, machen diesmal jedoch eine PUT- statt einer GET-Anfrage, indem Sie -X PUT
angeben und einige JSON-formatierte Daten auf der Befehlszeile mit -d
einfügen.
Sie können Ihren ersten Eintrag wie folgt hinzufü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 oben genannten 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'
Dies sollte die folgende Ausgabe liefern:
{
"_index" : "test",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"counter" : 1,
"tags" : [
"red"
]
}
}
Um einen bestehenden 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
}
Im obigen Beispiel haben wir die Tags des ersten Eintrags auf „blue“ geändert. Damit wurde die Versionsnummer automatisch auf 2 erhöht.
Sie haben vielleicht das zusätzliche Argument pretty
in den obigen Anfragen bemerkt. Es sorgt für eine formatierte Ausgabe, sodass jedes Datenfeld in einer neuen Zeile erscheint. Ohne pretty
wird die Ausgabe von Elasticsearch ohne Zeilenumbrüche oder Einrückungen zurückgegeben. Das ist für die API-Kommunikation ausreichend, aber schwieriger zu lesen.
Sie haben nun Daten in Elasticsearch hinzugefügt und abgefragt. Um mehr über andere Operationen zu erfahren, schauen Sie sich bitte die API-Dokumentation an.
Fazit
Sie haben nun Elasticsearch installiert, konfiguriert und angefangen, es zu nutzen. Um die Funktionalität von Elasticsearch weiter zu erforschen, besuchen Sie bitte die offizielle Elasticsearch-Dokumentation.