Elasticsearch ist eine kostenlose Open-Source-Suchmaschine, die auf Apache Lucene basiert und mit Volltextfähigkeit und Unterstützung für verteilte Architekturen ausgestattet ist. Dies ist eine seit langem etablierte Lösung im Bereich der Echtzeit-Datenanalyse.
In diesem Tutorial finden Sie alle notwendigen Schritte zum Erstellen und Konfigurieren eines Elasticsearch-Servers unter Linux Ubuntu 18.04.
Verbinden Sie sich zunächst über eine SSH-Verbindung mit Ihrem Server. Wenn Sie dies noch nicht getan haben, wird empfohlen, unseren Leitfaden zu befolgen, um sich sicher mit SSH zu verbinden. Im Falle eines lokalen Servers gehen Sie zum nächsten Schritt und öffnen Sie das Terminal Ihres Servers.
Java-Installation
Bevor Sie mit der Installation von Elasticsearch fortfahren, installieren Sie das Java Development Kit. Folgen Sie dazu unserer Anleitung zur Installation von Java unter Ubuntu 18.04. Falls JDK bereits auf Ihrem System installiert ist, überspringen Sie diesen Schritt.
Installation von Elasticsearch
Das Installationspaket kann direkt von der Elastic-Website heruntergeladen werden:
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-amd64.deb
Fahren Sie nach Abschluss des Downloads mit der Installation des Pakets fort:
$ sudo dpkg -i elasticsearch-7.3.2-amd64.deb
Dann fahren Sie fort, indem Sie den Dienst installieren und starten über:
$ sudo systemctl enable elasticsearch.service
$ sudo systemctl start elasticsearch.service
Konfiguration der Firewall
Im Falle einer Firewall auf dem System kann es notwendig sein, Datenverkehr zum Elasticsearch-Dienst zuzulassen, indem der entsprechende Port aktiviert wird.
Wenn Sie die UFW-Firewall verwenden, geben Sie diesen Befehl ein, um den standardmäßigen Elasticsearch-Port zu entsperren:
$ sudo ufw allow 9200
An diesem Punkt erlaubt die Firewall Verbindungen auf Port 9200.
Überprüfen des Status des Dienstes
Überprüfen Sie, ob der Dienst ausgeführt wird, und überprüfen Sie die TCP-Ports, die derzeit lauschen, indem Sie Folgendes ausführen:
$ netstat -a -o -n | grep LISTEN
Dann sind die Listening Ports 9200 und 9300 wie folgt zu sehen:
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN off (0.00/0/0)
tcp6 0 0 127.0.0.1:9200 :::* LISTEN off (0.00/0/0)
tcp6 0 0 ::1:9200 :::* LISTEN off (0.00/0/0)
tcp6 0 0 127.0.0.1:9300 :::* LISTEN off (0.00/0/0)
tcp6 0 0 ::1:9300 :::* LISTEN off (0.00/0/0)
Elasticsearch verwenden
Nun, da der Dienst läuft, verwenden Sie Tests, indem Sie Daten eingeben und prüfen, ob sie später gefunden werden.
NB. Wenn Sie einen Remote-Server verwenden, ersetzen Sie in den unten gezeigten Befehlen localhost durch die IP-Adresse Ihres Servers.
Geben Sie in diesem Beispiel 3 Handelsprodukte ein:
$ curl -POST 'http://localhost:9200/products/1' -curl -H 'Content-Type: application/json' -d '
{
"name": "Coffe Machine 1",
"uuid": "00000010"
}'
Durch obigen Aufruf wird ein neues Dokument in den Index "products" mit dem Attribut "name" entsprechend "Coffe Machine 1" und mit einer Kennung "uuid" eingefügt:
{"_index":"index","_type":"products","_id":"cUqGY20Bm2mQybZCoeKU","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Elasticsearch antwortet wie oben gezeigt, indem es die ID des eingefügten Produkts und andere Berichtsdaten angibt.
Fahren Sie dann fort, indem Sie 2 weitere Produkte einfügen:
$ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '
{
"name": "White Desk",
"uuid": "WD000010"
}'
$ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '
{
"name": "Black Desk",
"uuid": "WD000011"
}'
Sobald Sie fertig sind, können Sie fortfahren, indem Sie Ihre erste Suche mit "Schreibtisch" als Suchparameter durchführen:
$ curl -X GET "http://localhost:9200/index/_search?q=Desk*&pretty"
Wie Sie sehen können, werden 2 Ergebnisse erhalten, einschließlich der beiden oben eingefügten Schreibtische:
{
...
"hits" : [
{
….
"_source" : {
"name" : "White Desk",
"uuid" : "WD000010"
}
},
{
...
"_score" : 1.0,
"_source" : {
"name" : "Black Desk",
"uuid" : "WD000011"
}
}
]
}
}
Konfiguration von Elastisearch
Alle Elasticsearch-Konfigurationsdateien befinden sich im Verzeichnis /etc/elasticsearch. Die wichtigste Datei ist elasticsearch.yml, die es ermöglicht, die grundlegenden Betriebsparameter des Systems zu ändern, wie z. B. die Cluster-Informationen, die TCP / IP-Verbindungsparameter oder die Ordner, in denen die Daten gespeichert werden sollen.
Alle vorhandenen Konfigurationsdateien verwenden das YAML-Format, also achten Sie beim Bearbeiten dieser Dateien auf die Einrückung.
Verbesserung der Sicherheit
Eine der ersten Maßnahmen zur Erhöhung der Sicherheit des Dienstes besteht darin, eingehende Verbindungen zu begrenzen und nur lokale Verbindungen zuzulassen. Auf diese Weise kann nur Ihre Anwendung auf dem Server den Dienst nutzen.
Um die Listening-Karte zu modifizieren, ändern Sie die Datei /etc/elasticsearch/elasticsearch.yml, gehen Sie zum Entkommentieren und modifizieren Sie die folgende Zeile:
…
network.host: 127.0.0.1
...
Speichern Sie die Datei und starten Sie den Dienst neu, um die Änderungen zu übernehmen:
$ sudo systemctl restart elasticsearch.service
Warten Sie ein paar Minuten und überprüfen Sie, ob der Dienst nur auf der lokalen Schnittstelle lauscht, indem Sie Folgendes starten:
$ netstat -a -o -n | grep LISTEN
Um den Dienst auch für die externe Nutzung verfügbar zu halten, ist es jederzeit möglich, den Listening-Port zu ändern, um die Anwesenheit von Elasticsearch zu verbergen.
Bearbeiten Sie die Hauptkonfigurationsdatei /etc/elasticsearch/elasticsearch.yml:
…
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 2900
...
NB Statt 2900 Tür kann jede andere Tür eingefügt werden.
Nach dem Speichern der Datei den Dienst neu starten:
$ sudo systemctl restart elasticsearch.service
Um den Status des Dienstes zu überprüfen, verwenden Sie nach dem Anwenden der Änderungen immer netstat:
$ netstat -a -o -n | grep LISTEN