Elasticsearch ist eine Search Engine auf Basis von Lucene. Das in Java geschriebene Programm speichert seine Daten in einem NoSQL-Format (JSON). Die Kommunikation mit Clients erfolgt über eine RESTful-API. Elasticsearch ist neben Solr die am weitesten verbreitete Search Engine. In diesem Artikel ist beschrieben, wie Sie Elasticsearch auf Ihrem Managed Flex Server installieren und verwenden können.
Anforderungen
Elasticsearch kann ab Managed Flex Server M in Betrieb genommen werden.
Installation
Wir empfehlen Ihnen, einen Ordner ~/app/ für Ihre Applikationen zu erstellen und darin jeweils für jede Ihrer Applikationen einen eigenen Unterordner anzulegen. So haben Sie jederzeit eine saubere Ordnung und eine klare Übersicht. Für Elasticsearch erstellen wir daher den Ordner ~/app/elasticsearch.
mkdir -p ~/app/elasticsearch
Als erstes installieren sie Elasticsearch in der gewünschten (neusten) Version. Sie finden diese auf der Webseite von elastic. Wählen sie dort die Version für LINUX X86_64 aus. Entpacken sie den Inhalt des Archivs in das oben erstellte Verzeichnis.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-X.X.X.tar.gz -O /tmp/elastic.tar.gz
tar -xzf /tmp/elastic.tar.gz -C ~/app/elasticsearch
rm -rf /tmp/elastic.tar.gz
cd ~/app/elasticsearch
ln -s elasticsearch-X.X.X current
Danach finden Sie Ihr Elasticsearch im Ordner ~/app/elasticsearch/current/. Durch die Verwendung des Current-Symlinks ist es ein Leichtes (zum Beispiel bei Upgrades auf neuere Versionen), sauber und übersichtlich parallele Installationen zu betreiben und zu verwalten.
Java ist auf ihrem Managed Flex Server bereits vorinstalliert.
Damit Elasticsearch OpenJDK auch findet, müssen Sie folgende Befehle ausführen:
echo 'export ES_JAVA_HOME="/usr/local/openjdk17"' >> ~/.profile
echo 'export ES_JAVA_OPTS="-Xms1g -Xmx1g"' >> ~/.profile
source ~/.profile
Konfiguration von Elasticsearch
Die Konfiguration von Elasticsearch wird in der Datei config/elasticsearch.yml in Ihrem Elasticsearch Directory vorgenommen. Die Datei ist reichlich kommentiert und mit Hinweisen zu den Optionen versehen.
- Pfade
- Kümmern Sie sich insbesondere um die Pfade zu den Daten (path.data) sowie zu den Logs (path.logs). Bei den Letzteren stellen Sie unbedingt sicher, dass diese periodisch gelöscht werden und nicht plötzlich Ihren Webspace auffüllen. Standardmässig wird beides in je ein Subdirectory des Installationsordners geschrieben.
- Netzwerk
- Das REST API von Elasticsearch standardmässig auf der IP 127.0.0.1 unter Port 9200 verfügbar (Port 9300 für die Node-Kommunikation). Da sind normalerweise keine Änderungen notwendig. Binden Sie aus Sicherheitsgründen jedoch insbesondere nie auf eine öffentliche IP-Adresse!
- X-Pack
- Da X-Pack unter FreeBSD (wie auch unter diversen anderen Plattformen) nicht unterstützt wird, müssen Sie dieses in der Konfiguration abschalten. Bearbeiten Sie die Konfigurationsdatei mit einem beliebigen Texteditor oder fügen Sie die entsprechende Konfiguration direkt über die Shell an:
echo -e "\n\n# disable xpack as it is not supported on FreeBSD, $USER, $(date)\nxpack.ml.enabled: false" >> ~/app/elasticsearch/current/config/elasticsearch.yml
- Disk Watermark
- Die Limite für das Minimum an freiem Speicherplatz ist standardmässig prozentual festgelegt und greift aufgrund des grossen Speicherplatzes zu früh. Die Werte sollten daher in GB definiert werden.
echo -e "\n\n# adjust low disk watermark, $USER, $(date)\ncluster.routing.allocation.disk.watermark.low: 20G" >> ~/app/elasticsearch/current/config/elasticsearch.yml echo -e "\n\n# adjust high disk watermark, $USER, $(date)\ncluster.routing.allocation.disk.watermark.high: 10G" >> ~/app/elasticsearch/current/config/elasticsearch.yml echo -e "\n\n# adjust watermark flood stage, $USER, $(date)\ncluster.routing.allocation.disk.watermark.flood_stage: 5G" >> ~/app/elasticsearch/current/config/elasticsearch.yml
Starten von Elasticsearch
Wenn Sie Elasticsearch erfolgreich installiert und konfiguriert haben, können Sie den Dienst mit ~/app/elasticsearch/current/bin/elasticsearch zum Testen starten:
./bin/elasticsearch
Ausgaben von Elastic Search
Beachten Sie, dass es bis zu einer halben Minute dauern kann, bis Elasticsearch gestartet und einsatzfähig ist.
Details und weitere Möglichkeiten zur Konfiguration von Elasticsearch entnehmen Sie der offiziellen Dokumentation von Elasticsearch.
Integration
Betrieb mit der Custom Service Control
Bisher haben Sie Ihr Elasticsearch von Hand über die Shell gestartet. Während das zum Testen und Entwickeln zwar ein einfacher Weg sein kann, ist es für den produktiven Betrieb keine Option. Die Custom Service Control (CSC) kann sich um den Betrieb und das automatische Management von Elastic, zum Beispiel das Starten und Stoppen bei Wartungsarbeiten an Ihrem Server, kümmern.
Die Konfiguration in der CSC ist denkbar einfach. Erstellen Sie dazu einen neuen Custom Service für Elasticsearch:
hpservices supervisord add elasticsearch
successfully created dir for elasticsearch: /home/username/.services/supervisord/elasticsearch
successfully created dir for elasticsearch: /home/username/.services/supervisord/elasticsearch/log
supervisord service config file written: /home/username/.services/supervisord/elasticsearch/service.conf
Dabei wird in der Datei ~/.services/supervisord/elasticsearch/service.conf ein Konfigurationsgerüst für den neuen Service erstellt. Für Elasticsearch muss das command angepasst sowie die Environment Variable ergänzt werden, ansonsten können Sie alle vorgeschlagenen Werte übernehmen (Strichpunkt am Anfang der Zeile entfernen).
[program:elasticsearch]
command=%(ENV_HOME)s/app/elasticsearch/current/bin/elasticsearch ; the program (can take args)
directory=%(ENV_HOME)s/app/elasticsearch/ ; directory to cwd to before exec (default no cwd)
autostart=true ; start application at supervisord start (default: true)
stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10)
stdout_logfile=%(ENV_HOME)s/.services/supervisord/elasticsearch/log/default.log
stdout_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default ist 50MB)
stdout_logfile_backups=10 ; number of stdout logfile backups (0 means none, default 10)
stderr_logfile=%(ENV_HOME)s/.services/supervisord/elasticsearch/log/default.err
stderr_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default is 50MB)
stderr_logfile_backups=10 ; number of stderr logfile backups (0 means none, default 10)
environment=ES_JAVA_HOME="/usr/local/openjdk17",ES_JAVA_OPTS="-Xms1g -Xmx1g"
Mit supervisorctl update können Sie die neue Konfiguration für den Elasticsearch Service aktivieren:
supervisorctl update
elasticsearch: added process group
Achtung: Falls Sie einen Fehler erhalten, muss zuerst einmalig "hpservices supervisord start" ausgeführt werden.
Genaueres zur Bedienung und zu den Möglichkeiten, die Ihnen mit der CSC zur Verfügung stehen, können Sie in der Anleitung zur Custom Service Control entnehmen.
Für Supportanfragen verwenden Sie bitte dieses Formular.