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.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren:

centron Managed Cloud Hosting in Deutschland

Dimensionsreduktion – IsoMap

Python
Dimensionsreduktion – IsoMap Content1 Einführung2 Voraussetzungen für die Dimensionsreduktion3 Warum geodätische Distanzen für Dimensionsreduktion besser sind4 Dimensionsreduktion: Schritte des IsoMap-Algorithmus5 Landmark IsoMap6 Schwächen von Isomap7 Fazit zur Dimensionsreduktion Einführung Isomap…
centron Managed Cloud Hosting in Deutschland

Was jeder ML/AI-Entwickler über ONNX wissen sollte

Python
Was jeder ML/AI-Entwickler über ONNX wissen sollte Content1 Einleitung2 ONNX Überblick3 Voraussetzungen für ML/AI-Entwickler4 ONNX in der Praxis5 Fazit für ML/AI-Entwickler Einleitung Das Open Neural Network Exchange Format (ONNX) ist…