Elasticsearch ist eine Open-Source-Suchmaschine basierend auf Apache Lucene und bietet eine in Echtzeit verteilte Volltext-Suchmaschine mit einer HTTP-Webschnittstelle und schemafreien JSON-Dokumenten.
Elasticsearch wird in Java entwickelt. Die Open-Source-Version von Elasticsearch wird unter der Apache 2.0-Lizenz veröffentlicht, und die kommerzielle Version wird unter der Elastic-Lizenz veröffentlicht. Derzeit ist es nach Apache Solr die beliebteste Suchmaschine für Unternehmen.
Dieser Beitrag hilft Ihnen bei der Installation von Elasticsearch auf CentOS 8 / RHEL 8.
Voraussetzungen
Elasticsearch wird mit Java erstellt und das Paket enthält eine gebündelte Version von OpenJDK, was bedeutet, dass Sie Java für die Installation von Elasticsearch nicht separat installieren müssen. Das gebündelte OpenJDK befindet sich im JDK-Verzeichnis des Elasticsearch-Home-Verzeichnisses /usr/share/elasticsearch.
Installieren Sie Java
Um Ihre eigene Java-Version zu verwenden, installieren Sie die LTS-Version von Java und setzen Sie die Umgebungsvariable JAVA_HOME auf Ihrem System.
LESEN :So installieren Sie Java unter CentOS 8 / RHEL 8
Überprüfen Sie die auf dem System installierte Java-Version.
java -version
Ausgabe:
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Stellen Sie JAVA_HOME mit dem folgenden Befehl ein.
export JAVA_HOME=<JAVA_PATH>Nachdem Sie Elasticsearch auf Ihrem System installiert haben, legen Sie JAVA_HOME in der Datei /etc/sysconfig/elasticsearch fest, damit Elasticsearch die benutzerdefinierte Java-Version verwenden kann.
Elasticsearch-Repository einrichten
Elastic bietet ein vorgefertigtes Binärpaket (rpm) für RHEL und seine Derivate. Laden Sie den öffentlichen Signaturschlüssel von Elastic herunter und installieren Sie ihn.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Kostenlose Version
Dieses Paket kann kostenlos verwendet werden. Es enthält Open-Source-, kostenlose und kostenpflichtige kommerzielle Funktionen. Wenn Sie ein Paket installieren, erhalten Sie eine Basislizenz. Sie können die Abonnementseite besuchen, um alle Funktionen aufzulisten, die in der kostenlosen und kommerziellen Version enthalten sind.
Sie können eine 30-tägige Testversion starten, um alle kostenpflichtigen Funktionen auszuprobieren. Am Ende des Testzeitraums funktionieren die kommerziellen Funktionen in einem eingeschränkten Modus. Sie können die Lizenz auf eine Basislizenz zurücksetzen, die Testversion verlängern oder ein Abonnement erwerben.
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Open-Source-Version
Dieses Paket kann kostenlos verwendet werden und enthält nur Funktionen, die unter der Apache 2.0-Lizenz verfügbar sind.
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Elasticsearch installieren
Installieren Sie Elasticsearch (v7.x) mit dem folgenden Befehl.
Kostenlose Version
yum install -y elasticsearch
Open-Source-Version
yum install -y elasticsearch-oss
Aktivieren Sie Elasticsearch für den automatischen Start während des Systemstarts.
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Nachdem Sie den Elasticsearch-Dienst gestartet haben, warten Sie mindestens eine Minute, damit er vollständig gestartet werden kann. Andernfalls schlägt der Test fehl.
Elastisearch sollte jetzt auf Port 9200 lauschen, um HTTP-Anfragen zu verarbeiten. Verwenden Sie curl, um die Antwort zu erhalten.
curl -X GET 'http://localhost:9200'
Sie sollten eine Antwort wie unten erhalten.
{ "name" : "centos8.itzgeek.local", "cluster_name" : "elasticsearch", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Elasticsearch konfigurieren
Elasticsearch-Konfigurationsdateien befinden sich im Verzeichnis /etc/elasticsearch/. elasticsearch.yml ist die Hauptkonfigurationsdatei von Elasticsearch und enthält Standardeinstellungen für die Ausführung des Entwicklungsclusters. Elasticsearch-Protokolle werden im Verzeichnis /var/log/elasticsearch gespeichert.
Clustername
Die Einstellung cluster.name wird verwendet, um Knoten zu erkennen und automatisch mit anderen Knoten zu verbinden. Wenn eine Gruppe von Elasticsearch-Knoten im selben Netzwerk denselben Clusternamen hat, erkennen sie sich gegenseitig und bilden einen Cluster.
Ändern Sie den Standard-Clusternamen des Elasticsearch-Knotens, um eine automatische Verbindung mit anderen Knoten im selben Netzwerk zu vermeiden. Stellen Sie sicher, dass Sie einen eindeutigen Clusternamen verwenden.
Bearbeiten Sie die Datei elasticsearch.yml.
vi /etc/elasticsearch/elasticsearch.yml
Ersetzen Sie els-cluster durch den Namen Ihres Elasticsearch-Clusters.
cluster.name: els-cluster
Knotenname
Der node.name ist wie ein Hostname für den Elasticsearch-Server, der während des Dienststarts dynamisch generiert wird. Sie können den Knotennamen festlegen, indem Sie die folgende Zeile aktualisieren. Ersetzen Sie els-cluster-node01 durch Ihren Elasticsearch-Knotennamen.
node.name: els-cluster-node01
Zuhöradresse
Elasticsearch bindet an localhost (127.0.0.1) und überwacht standardmäßig Portnummer 9200 auf HTTP-Datenverkehr. Es verwendet die Portnummer 9300 – 9400 für die Kommunikation zwischen Knoten innerhalb des Clusters.
Um einen Elasticsearch-Cluster mit mehreren Knoten zu bilden oder den Elasticsearch-Knoten für die Produktionsnutzung bereitzustellen, damit Anwendungen auf den Elasticsearch-Knoten zugreifen können, müssen Sie Elasticsearch so konfigurieren, dass es auf die IP-Adresse des Systems lauscht.
### Listening on particular IPv4 ### network.host: 192.168.0.10
ODER
### Listen on All IP Address ### network.host: 0.0.0.0
Sie müssen auch die folgenden Einstellungen mit Ihrer System-IP-Adresse aktualisieren.
discovery.seed_hosts: ["192.168.0.10"]
Starten Sie den Elasticsearch-Dienst neu.
systemctl restart elasticsearch
Warten Sie nach dem Neustart des Elasticsearch-Dienstes mindestens eine Minute, damit Elasticsearch vollständig gestartet werden kann.
Überprüfen Sie mit dem Befehl netstat, ob Elasticsearch auf Port 9200 auf allen IP-Adressen oder auf einer bestimmten IP-Adresse lauscht.
LESEN: netstat-Befehl unter CentOS 8 / RHEL 8 nicht gefunden
netstat -antup | grep -i 9200
Ausgabe:
tcp6 0 0 :::9200 :::* LISTEN 2143/java
Überprüfen Sie, ob sowohl der Knotenname als auch der Clustername richtig eingestellt wurden, indem Sie curl.
verwendencurl -X GET 'http://192.168.0.10:9200'
Sie sollten eine Antwort wie unten erhalten.
{ "name" : "els-cluster-node01", "cluster_name" : "els-cluster", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Mit Elasticsearch arbeiten
Lassen Sie uns einige Daten zu Elasticsearch hinzufügen. Sie können den Curl-Befehl verwenden, um die Daten in Elasticsearch über Port 9200 mit einer RESTful-API zu lesen, hinzuzufügen, zu löschen und zu aktualisieren.
Dokumente werden im folgenden Format gespeichert
Elasticsearch ⇒ Indizes ⇒ Typen ⇒ Dokumente ⇒ Felder
Indizes: Plural eines Indexes, wo die Daten von Elasticsearch gespeichert werden.
Typen: Es enthält mehrere Dokumente und ist wie der Datentyp.
Dokumente: Es enthält die Datenfelder.
Felder: Aktuelle Daten.
Daten hinzufügen
Verwenden Sie den folgenden Curl-Befehl, um Daten zu unserer Elasticsearch hinzuzufügen.
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
Sie sollten die folgende Antwort mit „Ergebnis“ erhalten:„created.“
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
Wo,
itzgeek: Der Index des Elasticsearch-Clusters.
Anleitungen: Die Art des Dokuments
1: Die ID des Eintrags unter howtos und itzgeek index.
Daten lesen
Verwenden Sie den folgenden Befehl, um Daten auf Elasticsearch abzufragen.
curl -X GET 'http://localhost:9200/itzgeek/howtos/1'
Hängen Sie ?pretty=true an den obigen Befehl an, um eine formatierte Ausgabe zu erhalten.
curl -X GET 'http://localhost:9200/itzgeek/howtos/1?pretty=true'
Die Ausgabe sieht wie folgt aus.
{ "_index" : "itzgeek", "_type" : "howtos", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" } }
Daten aktualisieren
Verwenden Sie den folgenden Befehl, um die Daten zu aktualisieren.
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
An Index, Typ und Dokument ändert sich nichts. Felder werden jedoch geänderte Daten enthalten.
Die Antwort sollte wie unten aussehen und „_version“:2 und „result“:„updated“ enthalten, was bedeutet, dass das Dokument aktualisiert wurde.
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Daten entfernen
Verwenden Sie den folgenden Befehl, um das Dokument zu löschen.
curl -X DELETE 'http://localhost:9200/itzgeek/howtos/1'
Die Antwort sieht wie folgt aus. Wenn das Dokument gefunden wird, erhalten Sie „Ergebnis“:„gelöscht“.
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":3,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":2,"_primary_term":1}
Wenn das Dokument nicht gefunden wird, erhalten Sie „result“:„not_found“.
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":4,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":3,"_primary_term":1}
Schlussfolgerung
Ich hoffe, Sie haben gelernt, wie Sie Elasticsearch unter CentOS 8 / RHEL 8 installieren und Daten in Elasticsearch hinzufügen, lesen, löschen und aktualisieren. Sie können auch einen Elasticsearch-Cluster mit mehreren Knoten einrichten, um große Datenmengen zu verarbeiten.