Elasticsearch est un moteur de recherche basé sur Lucene. Le programme écrit en Java enregistre ses données dans un format NoSQL (JSON). La communication avec les clients s’effectue par le biais d’une API RESTful. Avec Solr, Elasticsearch est le moteur de recherche le plus répandu. Cet article décrit comment installer et utiliser Elasticsearch sur votre Managed Flex Server.
Exigences
Elasticsearch peut être mis en service à partir de Managed Flex Server M.
Installation
Nous vous conseillons de créer un dossier ~/app/ pour vos applications et d’y créer un sous-dossier propre pour chacune d’entre elles. Vous avez ainsi toujours un ordre propre et un aperçu clair. Pour Elasticsearch, nous créons donc le dossier ~/app/elasticsearch.
mkdir -p ~/app/elasticsearch
Dès lors, la première étape consiste à installer Elasticsearch dans la version souhaitée (la plus récente). Vous la trouverez sur le site Web d’elastic. Sélectionnez la version pour LINUX X86_64. Dézippez le contenu de l’archive dans le répertoire créé ci-dessus.
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
Vous trouverez ensuite votre Elasticsearch dans le dossier ~/app/elasticsearch/current/. Par l’utilisation du Current Symlink, il est facile (par exemple pour les mises à niveau vers de nouvelles versions) d’utiliser et de gérer les installations parallèles de manière propre et claire.
Java est déjà préinstallé sur votre Managed Flex Server.
Pour que Elasticsearch puisse localiser OpenJDK, vous devez exécuter pour cela les commandes suivantes:
echo 'export ES_JAVA_HOME="/usr/local/openjdk17"' >> ~/.profile
echo 'export ES_JAVA_OPTS="-Xms1g -Xmx1g"' >> ~/.profile
source ~/.profile
Configuration d’Elasticsearch
La configuration d’Elasticsearch est effectuée dans le fichier config/elasticsearch.yml dans votre répertoire Elasticsearch. Le fichier est richement commenté et présente des conseils sur les options.
- Chemins d’accès
- Faites bien attention aux chemins d’accès vers les données (path.data) et les journaux (path.logs). Pour ces derniers, assurez-vous obligatoirement qu’ils sont supprimés périodiquement et qu’ils ne remplissent pas soudainement votre espace Web. Par défaut, les deux sont écrits respectivement dans un sous-répertoire du dossier d’installation.
- Réseau
- L’API REST d’Elasticsearch est disponible par défaut sur l’IP 127.0.0.1 et le port 9200 (port 9300 pour la communication Node). Normalement, aucune modification n’est nécessaire ici. Pour des raisons de sécurité, ne liez surtout jamais une adresse IP publique!
- X-Pack
- Comme X-Pack n’est pas supporté par FreeBSD (ainsi que diverses autres plateformes), vous devez le désactiver dans la configuration. Editez le fichier de configuration avec n’importe quel éditeur de texte ou ajoutez directement la configuration correspondante via le shell:
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
- La limite pour le minimum d'espace de stockage disponible est fixée par défaut en pourcentage et la limite se déclenche trop tôten en raison de la grande quantité d'espace. Les valeurs doivent donc être définies en GB.
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
Démarrage d’Elasticsearch
Une fois Elasticsearch installé et configuré avec succès, vous pouvez démarrer le service pour test avec ~/app/elasticsearch/current/bin/elasticsearch:
./bin/elasticsearch
Editions de Elasticsearch
Notez qu’Elasticsearch peut prendre jusqu’à une demi-minute pour démarrer et être opérationnel.
Pour de plus amples détails et d’autres options de configuration d’Elasticsearch, consultez la documentation officielle d’Elasticsearch.
Intégration
Fonctionnement avec le Custom Service Control
Vous avez jusqu’à présent démarré votre Elasticsearch manuellement via le shell. Bien que cela puisse être un moyen facile lors du test et du développement, il ne s’agit pas d’une option viable pour le fonctionnement productif. Le Custom Service Control (CSC) peut s’occuper du fonctionnement et de la gestion automatique d’Elastic, par exemple le démarrage et l’arrêt pendant les travaux de maintenance sur votre serveur.
La configuration dans le CSC est très simple. Pour ce faire, créez un nouveau Custom Service pour 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
Un cadre de configuration pour le nouveau service est alors créé dans le fichier ~/.services/supervisord/elasticsearch/service.conf. Pour Elasticsearch, la command doit être modifiée et la variable d'environnement doit être rajoutée, sinon vous pouvez accepter toutes les valeurs proposées (enlevez le point-virgule en début de ligne).
[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"
supervisorctl update vous permet d’activer la nouvelle configuration pour le service Elasticsearch:
supervisorctl update
elasticsearch: added process group
Attention: En cas d'erreur, "hpservices supervisord start" doit d'abord être exécuté une fois.
Pour de plus amples détails sur l’utilisation et les possibilités qui vous sont offertes par le CSC, consultez le manuel du Custom Service Control.
Pour envoyer une demande d'assistance au support, merci d'utiliser ce formulaire-ci.