Vous êtes ici : 6.0 > Guide d'installation et d'exploitation > Installation des pré-requis > Serveur Elasticsearch

Serveur Elasticsearch

Depuis la version 6.5, Elasticsearch est utilisé pour effectuer la recherche full-text.

Deux modes sont présents dans le produit pour la mise en place de cette fonctionnalité :
  • Mode standalone : Le serveur Elasticsearch est installé sur une machine et communique avec l'application par appel TCP. Ce type d'installation permet de gérer au mieux les problématiques de performance en isolant les différents processus. Il est de plus obligatoire d'utiliser ce mode si votre application est installée en cluster. Kosmos recommande ce type d'installation.
  • Mode embedded : Le serveur Elasticsearch est embarqué dans l'application K-Sup. Il n'y a donc pas d'installation supplémentaire à réaliser. Cependant les ressources de la JVM sont partagées entre l'application et Elasticsearch. Il est déconseillé d'utiliser ce type d'installation pour les projets à forte volumétrie car les performances globales de l'application peuvent être dégradées.

Procédure d'installation

Cette procédure décrit l'installation du serveur Elasticsearch en mode standalone.

Pré-requis

Chaque noeud Elasticsearch doit disposer de suffisamment de ressources pour fonctionner dans les meilleures conditions :
  • CPU : minimum 2 coeurs - recommandé 4 coeurs
  • RAM : minimum 4 Go - recommandé 8 Go
Le serveur Elasticsearch communique avec l'application via le port 9300. Il faut donc exposer ce port pour permettre au(x) serveur(s) d’application d’accéder à l’instance Elasticsearch. Pour des raisons de sécurité, il ne faut surtout pas exposer ce port en dehors du LAN.
Le port 9200 peut être également exposé sur le LAN, à des fins de diagnostic.

Elasticsearch est réalisé en java et nécéssite donc l'installation au miminum de java  7.
Sur un environnement Debian :

apt-get install openjdk-7-jdk

Après l'installation, il faut impérativement valoriser la variable d'environnement JAVA_HOME .

Installation du serveur

La version du serveur doit impérativement correspondre à la version du client Elasticsearch présent dans le produit (version mineure identique) :
Version du produit Version Elasticsearch
6.5 2.4.1

# Ajout de la clé du repo Elastic dans APT
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# Ajout du repo Elastic dans la liste d'APT
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
# Installation d'Elacticsearch (tenir compte de la version compatible avec le produit installé)
sudo apt-get update && sudo apt-get install elasticsearch=2.4.x

Installation des plugins

Deux plugins Elasticsearch sont nécéssaires au fonctionnement de l'application :
  • DeleteByQuery : Permet de supprimer des clés d'index par une requête
  • MapperAttachmentPlugin : Effectue l'analyse des pièces jointes des (.pdf, .doc...)
Pour installer ces plugins effectuer les commandes suivantes :
cd /usr/share/elasticsearch
#Dans le répertoire Elasticsearch :
sudo bin/plugin install delete-by-query
sudo bin/plugin install mapper-attachments

Configuration

Il faut ensuite configurer le noeud installé. Pour cela éditez le fichier /etc/elasticsearch/elasticsearch.yml :

sudo vim /etc/elasticsearch/elasticsearch.yml

Décommentez ensuite les lignes avec les clés network.host, cluster.name et node.name et modifiez les valeurs :

network.host: IP_DU_SERVEUR_ELASTICSEARCH
cluster.name: core
node.name: core.node.JVM_ROUTE

avec JVM_ROUTE l'identifiant utilisé par le serveur Tomcat. Par défaut jvmRoute est égal à default.

Il faut de plus définir le nombre de shards et de replicas utilisés par les indexes Elasticsearch. Ces propriétés sont à adapter en fonction de la volumétrie de votre application. Nous conseillons d'utiliser par défaut 1 shard et 0 replicas :

index.number_of_shards: 1
index.number_of_replicas: 0


Exemple de configuration :
network.host: 192.168.1.73
cluster.name: core
node.name: core.node.default
index.number_of_shards: 1
index.number_of_replicas: 0

Déclaration produit

Afin d'utiliser le serveur elasticsearch installé, il faut effectuer la configuration suivante dans l'application.
Pour cela, déclarez les propriétés suivantes dans le fichier d'environnement env.properties de votre application :
search.mode = external
search.nodes = IP_DU_SERVEUR_ELASTICSEARCH

Montée de version du serveur

Attention la version du serveur doit toujours correspondre à la version du client utilisée dans le produit (cf Installation)
Pour mettre à jour le serveur Elasticsearch il faut :
  • Arrêter le service
service elasticsearch stop
  • Mettre à jour le serveur
#Pour une montée de version 2.4.6
sudo apt-get install elasticsearch=2.4.6
  • Supprimer les plugins
cd /usr/share/elasticsearch 
#Dans le répertoire d'installation d' Elasticsearch :
bin/plugin remove delete-by-query
bin/plugin remove mapper-attachments
  • Installer de nouveau les plugins
bin/plugin install delete-by-query
bin/plugin install mapper-attachments
  • Redémarrer le service
service elasticsearch start