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:

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.

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…