relecture rapide

This commit is contained in:
gcolpart 2016-10-10 21:34:30 +02:00
parent 4dba8d6720
commit 419ca34149

View file

@ -1,18 +1,15 @@
---
title: Howto Elasticsearch : installation et usage courant
---
title: Howto Elasticsearch
...
_Page en cours de vérification._
* Site officiel : <https://www.elastic.co/fr/products/elasticsearch>
* Documentation : <https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html>
* Forum communautaire : <https://discuss.elastic.co/c/elasticsearch>
Pour une installationde basique la suite ELK, voir l'article [HowtoELK]().
* Forum : <https://discuss.elastic.co/c/elasticsearch>
## 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
<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 <http://exploringelasticsearch.com/book>_
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, <https://github.com/andrewvc/ee-datasets/archive/master.zip>, 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": {