relecture rapide
This commit is contained in:
parent
4dba8d6720
commit
419ca34149
|
@ -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": {
|
||||
|
|
Loading…
Reference in a new issue