diff --git a/HowtoElasticsearch.md b/HowtoElasticsearch.md index eab7f03e..5d99b1d5 100644 --- a/HowtoElasticsearch.md +++ b/HowtoElasticsearch.md @@ -1,18 +1,15 @@ --- -title: Howto Elasticsearch : installation et usage courant ---- +title: Howto Elasticsearch +... _Page en cours de vérification._ -* Site officiel : * Documentation : -* Forum communautaire : - -Pour une installationde basique la suite ELK, voir l'article [HowtoELK](). +* Forum : ## Installation -Nous utilisons les paquets Debian distribués par Elasticsearch, les paquets officiels Debian n'étant pas à jour (Elasticsearch est en développement actif…) : +Vu le développement actif d'Elasticsearch, nous préconisons l'installation des paquets Debian distribués par Elasticsearch : ~~~ # echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list @@ -20,8 +17,6 @@ Nous utilisons les paquets Debian distribués par Elasticsearch, les paquets off # apt install elasticsearch openjdk-7-jre ~~~ -Il faut penser à mettre `http://packages.elastic.co/.*` dans la whitelist de Squid si nécessaire. - Pour que le démon soit géré automatiquement par systemd : ~~~ @@ -38,7 +33,6 @@ Dans `/etc/elasticsearch/logging.yml` +rootLogger: ${es.logger.level}, file ~~~ - Si on a un `/tmp` en _noexec_, il faut changer le chemin, au risque d'avoir l'erreur suivante. ~~~ @@ -64,7 +58,7 @@ Assurez-vous de créer le répertoire : ### Kopf - web admin interface for elasticsearch -https://github.com/lmenezes/elasticsearch-kopf + ~~~ # /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf @@ -169,7 +163,7 @@ On crée le dépôt sur le filesystem : # chown elasticsearch: /home/backup-elasticsearch ~~~ -NB : en cas de cluster multi-nœuds, il faut penser que le filesystem doit être partagé (via NFS ou autre) car chaque nœud ne gère que ses propres données. +*Note :* en cas de cluster multi-nœuds, il faut penser que le filesystem doit être partagé (via NFS par exemple) car chaque nœud ne gère que ses propres données. Le dépôt doit être référencé dans la configuration `/etc/elasticsearch/elasticsearch.yml` : @@ -180,15 +174,15 @@ path.repo: ["/home/backup-elasticsearch"] Après restart d'Elasticsearch on lui fait créer le snapshot **evobackup** : ~~~ -# curl -XPUT 127.0.0.1:9200/_snapshot/evobackup -d '{"type": "fs", "settings": {"location": "/home/backup-elasticsearch/evobackup", "compress": true}}' +$ curl -XPUT 127.0.0.1:9200/_snapshot/evobackup -d '{"type": "fs", "settings": {"location": "/home/backup-elasticsearch/evobackup", "compress": true}}' ~~~ Enfin, dans un script qui tourne régulièrement, on provoque la fixation d'un snapshot : -~~~ -date=$(date +%H) -curl -s -X DELETE "127.0.0.1:9200/_snapshot/evobackup/h${date}" | grep -v acknowledged..true -curl -s -X PUT "127.0.0.1:9200/_snapshot/evobackup/h${date}?wait_for_completion=true" -o /tmp/es_snapshot_h${date}.log +~~~{.bash} +$ date=$(date +%H) +$ curl -s -X DELETE "127.0.0.1:9200/_snapshot/evobackup/h${date}" | grep -v acknowledged..true +$ curl -s -X PUT "127.0.0.1:9200/_snapshot/evobackup/h${date}?wait_for_completion=true" -o /tmp/es_snapshot_h${date}.log ~~~ Ici, on crée un snapshot portant le numéro de l'heure courante. Il est supprimé avant d'être recréé afin d'avoir des snapshots "roulants". @@ -197,7 +191,7 @@ Ici, on crée un snapshot portant le numéro de l'heure courante. Il est supprim _Basé sur le livre _ -On utilisera l'outil Curl pour faire les requêtes. +On utilisera l'outil cURL pour faire les requêtes. En plaçant à la fin d'une URI `?pretty=true` on pourra obtenir un JSON formaté, plus lisible pour les humains. ### Avec une base de données d'exemple @@ -206,32 +200,32 @@ Nous allons utiliser une BDD d'exemple pour faire des tests. Télécharger, , décompresser l'archive et exécuter le programme Java qui va injecter la BDD "movie_db" dans votre cluster ES. -~~~ -java -jar elastic-loader.jar http://localhost:9200 datasets/movie_db.eloader +~~~{.bash} +$ java -jar elastic-loader.jar http://localhost:9200 datasets/movie_db.eloader ~~~ La BDD movie_db contient quelques noms de films, avec leurs informations associés (genre, date, acteurs, …). Pour consulter tout son contenu : -~~~ -curl http://localhost:9200/movie_db/_search?pretty=true +~~~{.bash} +$ curl http://localhost:9200/movie_db/_search?pretty=true ~~~ ### En créant une BDD #### Opérations CRUD -Créer un index (équivalent d'une base de données) nommé « planet ». +Créer un index (équivalent d'une base de données) nommé *planet* : -~~~ -curl -X PUT localhost:9200/planet +~~~{.bash} +$ curl -X PUT localhost:9200/planet ~~~ -Créer un type de donnée nommé « hacker ». +Créer un type de donnée nommé « hacker » : ~~~ -curl -X PUT localhost:9200/planet/hacker/_mapping -d ' +$ curl -X PUT localhost:9200/planet/hacker/_mapping -d ' { "hacker": { "properties": { @@ -247,28 +241,28 @@ curl -X PUT localhost:9200/planet/hacker/_mapping -d ' ' ~~~ -Créer un document de type hacker avec l'ID 1. +Créer un document de type hacker avec l'ID 1 : -~~~ -curl -X PUT localhost:9200/planet/hacker/1 -d '{"handle": "jean-michel", "age": 18}' +~~~{.bash} +$ curl -X PUT localhost:9200/planet/hacker/1 -d '{"handle": "jean-michel", "age": 18}' ~~~ -Voir son contenu. +Voir son contenu : -~~~ -curl localhost:9200/planet/hacker/1?pretty=true +~~~{.bash} +$ curl localhost:9200/planet/hacker/1?pretty=true ~~~ -Mise à jour du champ âge. +Mise à jour du champ âge : -~~~ -curl -X POST localhost:9200/planet/hacker/1/_update -d '{"doc": {"age": 19}}' +~~~{.bash} +$ curl -X POST localhost:9200/planet/hacker/1/_update -d '{"doc": {"age": 19}}' ~~~ -Suppression du document. +Suppression du document : -~~~ -curl -X DELETE localhost:9200/planet/hacker/1 +~~~{.bash} +$ curl -X DELETE localhost:9200/planet/hacker/1 ~~~ #### Recherche basique @@ -276,11 +270,8 @@ curl -X DELETE localhost:9200/planet/hacker/1 Recréons un index de test : ~~~ -curl -X DELETE localhost:9200/planet -~~~ - -~~~ -curl -X PUT localhost:9200/planet -d ' +$ curl -X DELETE localhost:9200/planet +$ curl -X PUT localhost:9200/planet -d ' { "mappings": { "hacker": { @@ -299,24 +290,24 @@ curl -X PUT localhost:9200/planet -d ' ' ~~~ -Ajoutons quelques documents. +Ajoutons quelques documents : ~~~ -curl -X PUT localhost:9200/planet/hacker/1 -d ' +$ curl -X PUT localhost:9200/planet/hacker/1 -d ' { "handle": "mark", "hobbies": ["rollerblading", "hacking", "coding"] } ' -curl -X PUT localhost:9200/planet/hacker/2 -d ' +$ curl -X PUT localhost:9200/planet/hacker/2 -d ' { "handle": "gondry", "hobbies": ["writing", "skateboarding"] } ' -curl -X PUT localhost:9200/planet/hacker/3 -d ' +$ curl -X PUT localhost:9200/planet/hacker/3 -d ' { "handle": "jean-michel", "hobbies": ["coding", "rollerblades"] @@ -324,10 +315,10 @@ curl -X PUT localhost:9200/planet/hacker/3 -d ' ' ~~~ -Recherchons ceux qui ont pour hobby « rollerblading ». +Recherchons ceux qui ont pour hobby *rollerblading* : ~~~ -curl -X POST localhost:9200/planet/hacker/_search?pretty=true -d ' +$ curl -X POST localhost:9200/planet/hacker/_search?pretty=true -d ' { "query": { "match": {