Elasticsearch ist eine hochgradig skalierbare Open-Source-Volltextsuch- und Analysemaschine . Es ist im Allgemeinen die zugrunde liegende Engine/Technologie, die Anwendungen mit komplexen Suchfunktionen und -anforderungen unterstützt. Die Software unterstützt RESTful-Vorgänge, mit denen Sie große Datenmengen schnell und nahezu in Echtzeit speichern, durchsuchen und analysieren können. Elasticsearch ist bei Systemadministratoren und Entwicklern sehr beliebt und beliebt, da es sich um eine mächtige Suchmaschine handelt, die auf der Lucene-Bibliothek basiert.
Im folgenden Tutorial erfahren Sie, wie Sie Elastic Search auf AlmaLinux 8 installieren .
Voraussetzungen
- Empfohlenes Betriebssystem: AlmaLinux 8.
- Benutzerkonto: Ein Benutzerkonto mit sudo-Privilegien oder Root-Zugriff (su-Befehl) .
Betriebssystem aktualisieren
Aktualisieren Sie Ihr AlmaLinux Betriebssystem, um sicherzustellen, dass alle vorhandenen Pakete auf dem neuesten Stand sind:
sudo dnf upgrade --refresh -y
Das Tutorial verwendet den sudo-Befehl und vorausgesetzt, Sie haben den Sudo-Status .
So überprüfen Sie den Sudo-Status Ihres Kontos:
sudo whoami
Beispielausgabe, die den Sudo-Status zeigt:
[joshua@localhost ~]$ sudo whoami
root
Um ein bestehendes oder neues Sudo-Konto einzurichten, besuchen Sie unser Tutorial zum So fügen Sie einen Benutzer zu Sudoers auf AlmaLinux hinzu .
So verwenden Sie das Root-Konto verwenden Sie den folgenden Befehl mit dem Root-Passwort, um sich anzumelden.
su
CURL-Paket installieren
Die CURL Der Befehl wird für einige Teile dieses Handbuchs benötigt. Um dieses Paket zu installieren, geben Sie den folgenden Befehl ein:
sudo dnf install curl -y
Java-Paket installieren
Um Elasticsearch erfolgreich zu installieren und, was noch wichtiger ist, zu verwenden , müssen Sie Java installieren . Der Vorgang ist relativ einfach.
Geben Sie den folgenden Befehl ein, um OpenJDK zu installieren Paket:
sudo dnf install java-11-openjdk-devel
Beispielabhängigkeiten, die installiert werden:
Geben Sie „J“ ein drücken Sie dann die "ENTER-TASTE" um mit der Installation fortzufahren.
Bestätigen Sie mit dem folgenden Befehl, dass Java erfolgreich installiert wurde:
java -version
Beispielausgabe:
openjdk version "11.0.12" 2021-07-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7-LTS, mixed mode, sharing)
Elasticsearch installieren
Elasticsearch ist nicht verfügbar im Standard AlmaLinux 8 App Stream , also müssen Sie es aus dem Elasticsearch-RPM-Repository installieren .
Bevor Sie das Repository hinzufügen, importieren Sie den GPG-Schlüssel mit folgendem Befehl:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Der nächste Schritt besteht darin, eine Elasticsearch-Repository-Datei wie folgt zu erstellen:
sudo nano /etc/yum.repos.d/elasticsearch.repo
Sobald Sie sich in der Datei befinden, fügen Sie die folgenden Zeilen hinzu:
[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
Zum Speichern (STRG+O), Beenden Sie dann (STRG+X) .
Installieren Sie jetzt Elasticsearch mit dem folgenden Befehl:
sudo dnf install elasticsearch
Beispielausgabe:
Geben Sie "Y" ein , und drücken Sie dann die "ENTER-TASTE" um mit der Installation fortzufahren
Standardmäßig ist der Elasticsearch-Dienst beim Booten deaktiviert und nicht aktiv. Um den Dienst zu starten und beim Systemstart zu aktivieren, geben Sie Folgendes ein:(systemctl) Befehl:
sudo systemctl enable elasticsearch.service --now
Beispielausgabe:
Executing: /usr/lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.
Überprüfen Sie, ob Elasticsearch ordnungsgemäß ausgeführt wird, indem Sie den curl-Befehl verwenden um eine HTTP-Anfrage zu senden an Port 9200 auf localhost wie folgt:
curl -X GET "localhost:9200/"
Beispielausgabe:
Geben Sie den folgenden Befehl ein, um die Systemmeldung anzuzeigen, die Elasticsearch auf Ihrem System protokolliert:
sudo journalctl -u elasticsearch
Beispiel für ein Ausgabeprotokoll:
-- Logs begin at Sat 2021-08-21 01:54:10 EDT, end at Sat 2021-08-21 02:11:00 EDT. --
Aug 21 02:09:17 localhost.localdomain systemd[1]: Starting Elasticsearch...
Aug 21 02:09:43 localhost.localdomain systemd[1]: Started Elasticsearch.
So konfigurieren Sie Elasticsearch
Elasticsearch-Daten werden im Standardverzeichnis (/var/lib/elasticsearch) gespeichert . Um die Konfigurationsdateien anzuzeigen oder zu bearbeiten, finden Sie sie im Verzeichnis (/etc/elasticsearch) , und Java-Startoptionen können in (/etc/default/elasticsearch) konfiguriert werden Konfigurationsdatei.
Die Standardeinstellungen sind in erster Linie für einzelne Server in Ordnung, da Elasticsearch auf localhost ausgeführt wird nur. Wenn Sie jedoch einen Cluster einrichten, müssen Sie die Konfigurationsdatei ändern, um Remote-Verbindungen zuzulassen.
Fernzugriff einrichten (optional)
Standardmäßig lauscht Elasticsearch nur auf localhost. Um dies zu ändern, öffnen Sie die Konfigurationsdatei wie folgt:
sudo nano /etc/elasticsearch/elasticsearch.yml
Scrollen Sie nach unten zu Zeile 56 und suchen Sie den Abschnitt "Netzwerk" und entkommentieren Sie (#) die folgende Zeile und ersetzen Sie sie wie folgt durch die interne private IP-Adresse oder die externe IP-Adresse:
Im Beispiel haben wir (#) auskommentiert der (network.host) und wie oben in eine interne private IP-Adresse geändert.
Aus Sicherheitsgründen ist es ideal für die Angabe von Adressen; Wenn Sie jedoch mehrere interne oder externe IP-Adressen haben, die auf den Server zugreifen, ändern Sie die Netzwerkschnittstelle so, dass sie alle abhört, indem Sie (0.0.0.0) eingeben wie folgt:
Speichern Sie die Konfigurationsdatei (STRG+O), Beenden Sie dann (CLTR+X) .
Sie müssen den Elasticsearch-Dienst mit dem folgenden Befehl neu starten, damit die Änderungen wirksam werden:
sudo systemctl restart elasticsearch
Verwendung von Elasticsearch
So verwenden Sie Elasticsearch mit dem curl-Befehl ist ein unkomplizierter Vorgang. Unten sind einige der am häufigsten verwendeten:
Index löschen
Unterhalb des Index heißt es Beispiele .
curl -X DELETE 'http://localhost:9200/samples'
Alle Indizes auflisten
curl -X GET 'http://localhost:9200/_cat/indices?v'
Alle Dokumente im Index auflisten
curl -X GET 'http://localhost:9200/sample/_search'
Abfrage mit URL-Parametern
Hier verwenden wir das Lucene-Abfrageformat, um q=school:Harvard.
zu schreibencurl -X GET http://localhost:9200/samples/_search?q=school:Harvard
Abfrage mit JSON, auch bekannt als Elasticsearch Query DSL
Sie können Abfragen mithilfe von Parametern für die URL durchführen. Sie können aber auch JSON verwenden, wie im folgenden Beispiel gezeigt. JSON wäre einfacher zu lesen und zu debuggen, wenn Sie eine komplexe Abfrage haben, als eine riesige Zeichenfolge von URL-Parametern.
curl -XGET --header 'Content-Type: application/json' http://localhost:9200/samples/_search -d '{
"query" : {
"match" : { "school": "Harvard" }
}
}'
Listenindexzuordnung
Alle Elasticsearch-Felder sind Indizes. Das listet also alle Felder und ihre Typen in einem Index auf.
curl -X GET http://localhost:9200/samples
Daten hinzufügen
curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/1 -d '{
"school" : "Harvard"
}'
Dokument aktualisieren
So fügen Sie einem bestehenden Dokument Felder hinzu. Zuerst erstellen wir eine neue. Dann aktualisieren wir es.
curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2 -d '
{
"school": "Clemson"
}'
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2/_update -d '{
"doc" : {
"students": 50000}
}'
Sicherungsindex
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/_reindex -d '{
"source": {
"index": "samples"
},
"dest": {
"index": "samples_backup"
}
}'
Bulk-Load-Daten im JSON-Format
export pwd="elastic:"
curl --user $pwd -H 'Content-Type: application/x-ndjson' -XPOST 'https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/0/_bulk?pretty' --data-binary @<file>
Clusterzustand anzeigen
curl --user $pwd -H 'Content-Type: application/json' -XGET https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cluster/health?pretty
Aggregation und Bucket-Aggregation
Für einen Nginx-Webserver erzeugt dies Web-Trefferzahlen nach Benutzerstadt:
curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"cityName": {
"terms": {
"field": "geoip.city_name.keyword",
"size": 50
}
}
}
}
'
Dadurch wird die Anzahl der Produktantwortcodes der Stadt in einem Nginx-Webserverprotokoll erweitert
curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"city": {
"terms": {
"field": "geoip.city_name.keyword"
},
"aggs": {
"responses": {
"terms": {
"field": "response"
}
}
}
},
"responses": {
"terms": {
"field": "response"
}
}
}
}'
Verwendung von ElasticSearch mit Basisauthentifizierung
Wenn Sie die Sicherheit mit ElasticSearch aktiviert haben, müssen Sie den Benutzer und das Passwort wie unten gezeigt für jeden Curl-Befehl angeben:
curl -X GET 'http://localhost:9200/_cat/indices?v' -u elastic:(password)
Hübscher Druck
Fügen Sie ?pretty=true zu jeder Suche hinzu, um den JSON-Code hübsch auszudrucken. So:
curl -X GET 'http://localhost:9200/(index)/_search'?pretty=true
Um nur bestimmte Felder abzufragen und zurückzugeben
Um nur bestimmte Felder zurückzugeben, fügen Sie sie in das Array _source ein:
GET filebeat-7.6.2-2020.05.05-000001/_search
{
"_source": ["suricata.eve.timestamp","source.geo.region_name","event.created"],
"query": {
"match" : { "source.geo.country_iso_code": "GR" }
}
}
Nach Datum abfragen
Wenn das Feld vom Typ Datum ist, können Sie Datumsberechnungen wie folgt verwenden:
GET filebeat-7.6.2-2020.05.05-000001/_search
{
"query": {
"range" : {
"event.created": {
"gte" : "now-7d/d"
}
}
}
}
So entfernen (deinstallieren) Sie Elasticsearch
Wenn Sie Elasticsearch nicht mehr benötigen, können Sie die Software mit dem folgenden Befehl entfernen:
sudo dnf autoremove elasticsearch
Beispielausgabe:
Geben Sie "Y" ein , und drücken Sie dann die "ENTER-TASTE" um mit dem Entfernen von Elasticsearch fortzufahren.