Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !



ElasticSearch

ElasticSearch est une base de données documentaire libre se basant sur le serveur Apache Lucene. Les requêtes se font via le protocole HTTP et l'interface REST. Le requête PUT permet d'ajouter/modifier une entrée tandis que GET permet de la récupérer. L'échange de données se faisant via le format JSON.

Ce tutoriel a pour but de montrer comment installer basiquement le service ElasticSearch et réaliser des requêtes simples. Les paramètres techniques détaillées et les concepts d'architecture ou de modèle documentaire ne seront pas abordés ici. Pour obtenir des informations plus poussées, veuillez vous référer aux liens en fin de pages ou chercher des sites plus spécialisés.

La version d'Ubuntu utilisée pour l'exemple est la 16.04. Peut-être faut-il adapter certaines commandes ou scripts pour d'autres versions.
Pour réaliser ce tutoriel, mieux veut connaitre les bases de :

En mode console

sudo apt-get install elasticsearch

Pour vérifier que le service est installé, rechercher le via :

service --status-all

Vous devriez voir une ligne elasticsearch :

 [ - ]  elasticsearch

Script de lancement

Sur la version 16.04 d'Ubuntu, le script de lancement par défaut est bogué. Il faut donc le corriger.

En effet, si vous saisissez cette commande :

sudo service elasticsearch status

Alors vous devriez voir un active (exited) qui indique la commande de lancement a été exécutée mais que l'on est pas sur du status du service :

● elasticsearch.service - LSB: Starts elasticsearch
   Loaded: loaded (/etc/init.d/elasticsearch; bad; vendor preset: enabled)
   Active: active (exited) since dim. 2016-09-18 12:57:38 CEST; 15s ago
     Docs: man:systemd-sysv-generator(8)
 
sept. 18 12:57:38 lubuntu-DEV systemd[1]: Starting LSB: Starts elasticsearch...
sept. 18 12:57:38 lubuntu-DEV systemd[1]: Started LSB: Starts elasticsearch

Pour remédier à cela, il faut modifier le script "init.d" :

sudo nano /etc/init.d/elasticsearch

D'abord, trouver la ligne :

test "$START_DAEMON" = true || exit 0

et la commenter :

#test "$START_DAEMON" = true || exit 0

Puis rechercher cette ligne :

start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS

et la modifier :

start-stop-daemon --start -b --user "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS
A quoi servent réellement ces commandes ?

D'un côté la variable START_DAEMON n'est pas utilisée dans la suite du script. Donc pourquoi forcer l'arret du script si elle n'existe pas ?

Ensuite, le groupe défini par la variable ES_USER ne semble pas le droit de lancer le démon alors que l'utilisateur référencer par la m^me variable lui le peut. Bizarre.

Maintenant le service doit pouvoir se lancer correctement. Pour le vérifier, exécutez :

sudo systemctl daemon-reload
sudo service elasticsearch restart
service elasticsearch status

Ce qui doit donner un active (running) qui indique la commande de lancement a été exécutée et que l'on a eu un retour positif:

● elasticsearch.service - LSB: Starts elasticsearch
   Loaded: loaded (/etc/init.d/elasticsearch; bad; vendor preset: enabled)
   Active: active (running) since dim. 2016-09-18 13:42:40 CEST; 18ms ago
     Docs: man:systemd-sysv-generator(8)
  Process: 7340 ExecStop=/etc/init.d/elasticsearch stop (code=exited, status=0/SUCCESS)
  Process: 7376 ExecStart=/etc/init.d/elasticsearch start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/elasticsearch.service
           ├─7151 /usr/lib/jvm/java-8-openjdk-i386/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupa
           └─7417 start-stop-daemon --start -b --user elasticsearch --pidfile /var/run/elasticsearch.pid --exec /usr/share/elasticsearch/bin/elasticsearch -- -d -p /var/run/elasticsearch.pid -Des.default.con
 
sept. 18 13:42:40 lubuntu-DEV systemd[1]: Starting LSB: Starts elasticsearch...
sept. 18 13:42:40 lubuntu-DEV elasticsearch[7376]:  * Starting Elasticsearch Server
sept. 18 13:42:40 lubuntu-DEV elasticsearch[7376]:    ...done.
sept. 18 13:42:40 lubuntu-DEV systemd[1]: Started LSB: Starts elasticsearch.

Vérification

Il est maintenant possible d'interroger le serveur via la requête HTTP GET :

curl -X GET 'http://localhost:9200'

Qui va renvoyer un JSON :

{
  "status" : 200,
  "name" : "Stature",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "1.7.3",
    "build_hash" : "NA",
    "build_timestamp" : "NA",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}

Il reste à créer la configuration minimale pour avoir un service opérationnel. Pour cela, ouvrir le fichier de configuration :

sudo nano /etc/elasticsearch/elasticsearch.yml

Dans la section Cluster, choisissez un nom pour le groupe. Par exemple :

cluster.name: elasticsearch

Dans la section Node, choisissez un nom pour le nœud. Par exemple :

node.name: "development"

Dans la section Index, paramétrez la répartition des données. Par exemple :

index.number_of_shards: 1
index.number_of_replicas: 0

Dans la section Network And HTTP, indiquez quelle plage du réseau est à écouter. Par exemple, pour tout écouter sans aucune restriction :

network.host: 0.0.0.0

Il ne reste plus qu'à relancer le service :

sudo service elasticsearch restart
Sera complété dans un future proche.

En français

En anglais

  • elasticsearch.1474213358.txt.gz
  • Dernière modification: Le 18/09/2016, 17:42
  • par demi-boulet