A previous version of this article was written by Toli.
Einführung
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.
In diesem Artikel werden wir Sie durch die Installation von Elasticsearch, die Konfiguration für Ihren Anwendungsfall, die Sicherung Ihrer Installation und den Einstieg in die Arbeit mit Ihrem Elasticsearch-Server führen.
Voraussetzungen
Bevor Sie diesem Tutorial folgen, benötigen Sie:
- Einen Ubuntu 22.04 Server mit 2 GB RAM und 2 CPUs, der mit einem nicht-root-Sudo-Benutzer eingerichtet ist. Sie können dies erreichen, indem Sie das Initiale Server-Setup mit Ubuntu 22.04 befolgen.
Für dieses Tutorial arbeiten wir mit der minimalen Menge an CPU und RAM, die zum Ausführen von Elasticsearch erforderlich ist. Beachten Sie, dass die Menge an CPU, RAM und Speicher, die Ihr Elasticsearch-Server benötigt, von der Menge der erwarteten Protokolle abhängt.
Schritt 1 — Installation und Konfiguration von Elasticsearch
Die Elasticsearch-Komponenten sind nicht in den Standard-Paketquellen von Ubuntu verfügbar. Sie können jedoch nach Hinzufügen der Paketquelle von Elastic mit APT installiert werden.
Alle Pakete sind mit dem Elasticsearch-Signaturschlüssel signiert, um Ihr System vor Paketfälschungen zu schützen. Pakete, die mit dem Schlüssel authentifiziert wurden, werden von Ihrem Paketmanager als vertrauenswürdig betrachtet. In diesem Schritt importieren Sie den öffentlichen GPG-Schlüssel von Elasticsearch und fügen die Elastic-Paketquelle hinzu, um Elasticsearch zu installieren.
Verwenden Sie zunächst cURL, das Kommandozeilenwerkzeug zum Übertragen von Daten mit URLs, um den öffentlichen GPG-Schlüssel von Elasticsearch in APT zu importieren. Beachten Sie, dass wir die Argumente -fsSL verwenden, um alle Fortschritte und möglichen Fehler zu unterdrücken (außer bei einem Serverfehler) und cURL zu ermöglichen, eine Anfrage an einen neuen Ort umzuleiten, falls erforderlich. Leiten Sie die Ausgabe an das gpg --dearmor
-Befehl weiter, der den Schlüssel in ein Format konvertiert, das apt verwenden kann, um heruntergeladene Pakete zu überprüfen.
Fügen Sie anschließend die Elastic-Quellenliste zum Verzeichnis sources.list.d
hinzu, in dem apt
nach neuen Quellen sucht:
Der Teil [signed-by=/usr/share/keyrings/elastic.gpg]
der Datei weist apt an, den von Ihnen heruntergeladenen Schlüssel zur Überprüfung von Repository- und Dateiinformationen für Elasticsearch-Pakete zu verwenden.
Als nächstes aktualisieren Sie Ihre Paketlisten, damit APT die neue Elastic-Quelle liest:
Dann installieren Sie Elasticsearch mit diesem Befehl:
Drücken Sie Y
, wenn Sie zur Bestätigung der Installation aufgefordert werden. Wenn Sie aufgefordert werden, Dienste neu zu starten, drücken Sie ENTER
, um die Standardeinstellungen zu akzeptieren und fortzufahren. Elasticsearch ist nun installiert und bereit, konfiguriert zu werden.
Schritt 2 — Konfigurieren von Elasticsearch
Um Elasticsearch zu konfigurieren, bearbeiten wir seine Hauptkonfigurationsdatei elasticsearch.yml
, in der die meisten seiner Konfigurationsoptionen gespeichert sind. Diese Datei befindet sich im Verzeichnis /etc/elasticsearch
.
Verwenden Sie Ihren bevorzugten Texteditor, um die Konfigurationsdatei von Elasticsearch zu bearbeiten. Hier verwenden wir nano
:
Hinweis: Die Konfigurationsdatei von Elasticsearch ist im YAML-Format, was bedeutet, dass wir das Einrückungsformat beibehalten müssen. Stellen Sie sicher, dass Sie beim Bearbeiten dieser Datei keine zusätzlichen Leerzeichen hinzufügen.
Die Datei elasticsearch.yml
bietet Konfigurationsoptionen für Ihren Cluster, Knoten, Pfade, Speicher, Netzwerk, Entdeckung und Gateway. Die meisten dieser Optionen sind bereits in der Datei vorkonfiguriert, aber Sie können sie nach Bedarf ändern. Für die Zwecke unserer Demonstration einer Einzelserverkonfiguration werden wir nur die Einstellungen für den Netzwerkhost anpassen.
Elasticsearch hört auf Verkehr von überall auf Port 9200
. Sie möchten den externen Zugriff auf Ihre Elasticsearch-Instanz einschränken, um zu verhindern, dass Außenstehende Ihre Daten lesen oder Ihren Elasticsearch-Cluster über dessen [REST API] (https://en.wikipedia.org/wiki/Representational_state_transfer) herunterfahren. Um den Zugriff zu beschränken und die Sicherheit zu erhöhen, finden Sie die Zeile, die network.host
angibt, entfernen Sie die Kommentierung und ersetzen Sie ihren Wert durch localhost
, sodass sie wie folgt aussieht:
. . .
# ---------------------------------- Netzwerk -----------------------------------
#
# Legen Sie die Bind-Adresse auf eine spezifische IP fest (IPv4 oder IPv6):
#
network.host: localhost
. . .
Wir haben localhost
angegeben, damit Elasticsearch auf allen Schnittstellen und gebundenen IPs hört. Wenn Sie möchten, dass es nur auf einer bestimmten Schnittstelle hört, können Sie ihre IP anstelle von localhost
angeben. Speichern und schließen Sie elasticsearch.yml
. Wenn Sie nano
verwenden, können Sie dies tun, indem Sie STRG+X
drücken, gefolgt von Y
und dann EINGABE
.
Dies sind die minimalen Einstellungen, mit denen Sie Elasticsearch verwenden können. Jetzt können Sie Elasticsearch zum ersten Mal starten.
Starten Sie den Elasticsearch-Dienst mit systemctl
. Geben Sie Elasticsearch einige Momente Zeit zum Starten. Andernfalls erhalten Sie möglicherweise Fehlermeldungen, dass keine Verbindung hergestellt werden kann.
Führen Sie als nächstes folgenden Befehl aus, um Elasticsearch zu aktivieren, damit es bei jedem Start Ihres Servers gestartet wird:
Mit Elasticsearch beim Start aktiviert, gehen wir zum nächsten Schritt über, um die Sicherheit zu besprechen.
Schritt 3 — Absichern von Elasticsearch
Nach Vorgabe kann Elasticsearch von jedem gesteuert werden, der auf die HTTP-API zugreifen kann. Dies ist nicht immer ein Sicherheitsrisiko, da Elasticsearch nur auf der lokalen Schnittstelle (d. h. 127.0.0.1
) hört, die nur lokal zugegriffen werden kann. Somit ist kein öffentlicher Zugriff möglich und solange alle Serverbenutzer vertrauenswürdig sind, muss Sicherheit möglicherweise keine große Rolle spielen.
Wenn Sie jedoch den Remotezugriff auf die HTTP-API zulassen müssen, können Sie die Netzwerkexposition mit der standardmäßigen Ubuntu-Firewall UFW einschränken. Diese Firewall sollte bereits aktiviert sein, wenn Sie den Schritten im Vorausgehenden Anleitung zum Erstkonfigurationsschritt mit Ubuntu 22.04 gefolgt sind.
Wir werden nun die Firewall so konfigurieren, dass der Zugriff auf den Standard-HTTP-API-Port von Elasticsearch (TCP 9200) für den vertrauenswürdigen Remote-Host zugelassen wird, normalerweise der Server, den Sie in einer Einzelserverkonfiguration verwenden, wie198.51.100.0
. Um den Zugriff zu ermöglichen, geben Sie den folgenden Befehl ein:
Wenn das abgeschlossen ist, können Sie UFW mit dem Befehl aktivieren:
Zum Schluss überprüfen Sie den Status von UFW mit dem folgenden Befehl:
Wenn Sie die Regeln korrekt angegeben haben, sollten Sie eine Ausgabe wie diese erhalten:
OutputStatus: active
To Action From
-- ------ ----
9200 ALLOW 198.51.100.0
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
Die UFW sollte nun aktiviert sein und so eingerichtet sein, dass der Elasticsearch-Port 9200 geschützt ist.
Wenn Sie in zusätzlichen Schutz investieren möchten, bietet Elasticsearch das kommerzielle Shield-Plugin zum Kauf an.
Schritt 4 — Elasticsearch testen
Zu diesem Zeitpunkt sollte Elasticsearch auf Port 9200 ausgeführt werden. Sie können es mit cURL und einem GET-Request testen.
Sie sollten die folgende Antwort erhalten:
Output{
"name" : "elastic-22",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "DEKKt_95QL6HLaqS9OkPdQ",
"version" : {
"number" : "7.17.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
"build_date" : "2022-02-23T22:20:54.153567231Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Wenn Sie eine ähnliche Antwort wie oben erhalten, funktioniert Elasticsearch ordnungsgemäß. Andernfalls stellen Sie sicher, dass Sie die Installationsanweisungen korrekt befolgt haben und Elasticsearch ausreichend Zeit zum vollständigen Start gegeben haben.
Um eine gründlichere Überprüfung von Elasticsearch durchzuführen, führen Sie den folgenden Befehl aus:
In der Ausgabe des obigen Befehls können Sie alle aktuellen Einstellungen für den Knoten, Cluster, Anwendungspfade, Module und mehr überprüfen.
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: create, read, update und delete. Um damit zu arbeiten, verwenden wir erneut den cURL-Befehl.
Sie können Ihren ersten Eintrag wie folgt hinzufügen:
Sie sollten die folgende Antwort erhalten:
Output{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Mit cURL haben wir eine HTTP POST-Anfrage an den Elasticsearch-Server gesendet. Die URI der Anfrage lautete /tutorial/helloworld/1
mit mehreren Parametern:
tutorial
ist der Index der Daten in Elasticsearch.helloworld
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.
Dies sollte die resultierende Ausgabe sein:
Output{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}
Um einen vorhandenen Eintrag zu ändern, können Sie eine HTTP PUT-Anfrage verwenden.
Elasticsearch sollte eine erfolgreiche Änderung wie folgt bestätigen:
Output{
"_index" : "tutorial",
"_type" : "helloworld",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
In dem obigen Beispiel haben wir die Nachricht
des ersten Eintrags in „Hallo, Leute!“ geändert. Dadurch wurde die Versionsnummer automatisch auf 2
erhöht.
Sie haben vielleicht das zusätzliche Argument pretty
in der obigen Anfrage bemerkt. Es ermöglicht ein menschenlesbares Format, damit Sie jedes Datenfeld in einer neuen Zeile schreiben können. Sie können auch Ihre Ergebnisse „verschönern“, wenn Sie Daten abrufen, um eine lesbarere Ausgabe zu erhalten, indem Sie den folgenden Befehl eingeben:
Jetzt wird die Antwort so formatiert, dass sie von einem Menschen analysiert werden kann:
Output{
"_index" : "tutorial",
"_type" : "helloworld",
"_id" : "1",
"_version" : 2,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"message" : "Hello, People!"
}
}
}
Wir haben nun Daten in Elasticsearch hinzugefügt und abgefragt. Um mehr über die anderen Operationen zu erfahren, überprüfen Sie bitte die API-Dokumentation.
Abschluss
Sie haben nun Elasticsearch installiert, konfiguriert und begonnen zu verwenden. Um die Funktionalität von Elasticsearch weiter zu erkunden, verweisen Sie bitte auf die offizielle Elasticsearch-Dokumentation.