Skip to content
Snippets Groups Projects
Commit d7a95ed4 authored by Yifan.Tian's avatar Yifan.Tian
Browse files

update partie 1

parent 7bf1132e
No related branches found
No related tags found
1 merge request!1Yifan.tian main patch 53600
# Installation Elasticsearch & Kibana avec Docker
Vous pouvez aussi les installer sans Docker, mais par le paquet d'installation depuis le [site officiel](https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html#elasticsearch-install-packages)
## Installer et lancer Elasticsearch
``` bash
......@@ -9,7 +10,7 @@ docker pull docker.elastic.co/elasticsearch/elasticsearch:8.6.0
# Lancer l'image
docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -t docker.elastic.co/elasticsearch/elasticsearch:8.6.0
```
**Note** : Durant le lancement dans le terminal ou dans Docker desktop vont apparaitre des informations suivantes (pensez à les copier-coller dans un fichier, elles vont vous servir après) :
**Note** : Durant le lancement dans le terminal ou dans Docker desktop vont apparaitre des informations suivantes (pensez à les copier-coller dans un fichier, elles vont vous servir après, surtout le mot de passe pour votre user "elasticsearch" et l'enrollment token pour Kibana) :
```
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
......@@ -35,10 +36,6 @@ docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -t docker.el
`docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.4.3`
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```
### ATTENTION **Converser ses informations**
* Mot de passe pour votre user "elasticsearch"
* Enrollment token pour Kibana
Laissez le terminal roule, ouvrez un nouveau terminal et tapez les commandes suivantes
......@@ -48,7 +45,6 @@ docker cp es-node01:/usr/share/elasticsearch/config/certs/http_ca.crt .
# Lancer la commande
curl --cacert http_ca.crt -u elastic https://localhost:9200
```
Cela va vous demander votre mot de passe, ce sera le mot de passe que vous avez sauvegardé précédemment
Réponse attendu :
......@@ -61,59 +57,178 @@ docker run --name kib-01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kib
```
Pour accéder au Kibana, vous devez utiliser le login "elasticsearch" et le mot de passe
## Partie 1 : Elastic Search dans Kibana et REST API
Aller dans Kibana, choisir Dev Tools>Console
#### Q1. Ajouter le nom d'une personne qui s'appelle Brayan dans l'index customer 1
Réponse attendu :
> POST /customer/_doc/1
{
"name": "Brayan"
}
#### Q2. Ajouter l'age de 23 pour Brayan
Réponse attendu :
> POST /customer/_doc/1
{
"age": 23
}
#### Q3. Ajouter 10000 dans la balance de Brayan
**Note** : Si vous êtes sur Ubuntu et vous rencontrez des problèmes, ne vous inquiétez pas, voici une liste de problèmes courants et leurs solutions
Réponse attendu :
> POST /customer/_doc/1
{
"balance": 10000
}
#### Q4. Ouvrir un nouveau terminal, lancer la commande :
> curl --cacert http_ca.crt -u elastic https://localhost:9200/customer/_doc/1
On doit pouvoir voir Brayan 23 ans avec 5000€ dans sa balance
#### Q5. Supprimer Brayan :)
Vous pouvez utiliser la ligne de commande ou Kibana comme vous voulez. Vérifiez bien que Brayan n'existe plus dans notre base de données
Note : Pour ajouter plusieurs documents en même temps, nous allons utiliser la requête _bulk
#### Q6. Ajouter le tableau suivant :
``` bash
# 1. Quand je lance mon image, j'ai l'erreur "max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
# ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log"
![Q2](/images/tableau.png)
#La solution permanente : exécutez les commandes suivantes
sudo sh -c 'echo "vm.max_map_count = 262144" >> /etc/sysctl.conf'
sudo sysctl -p
#### Q7. Trouver le client le plus jeune
#### Q8. Trouver la balance la plus élevé
#La solution temporaire (disparaît après le redémarrage) :
sysctl -w vm.max_map_count=262144
### Partie 2 : Agrégation de données et visualisation dans Kibana
# 2. Quand j'exécute la commande "url --cacert http_ca.crt -u elastic https://localhost:9200", j'ai l'erreur "curl: (77) error setting certificate"
Grâce aux visualisation, répondez aux questions suivants :
# Trouvez le fichier "http_ca.crt" dans le répertoire courant et exécutez les commandes suivantes
sudo chmod 711 http_ca.crt
sudo curl --cacert http_ca.crt -u elastic https://localhost:9200
* Le nombre total de vol
* Le pourcentage de vol en retard
* Le billet moyen le plus cher
* Le jour où il y a eu le plus de vol
* Le nombre de vol retardé avec un retard supérieur à 360 minutes
# 3. Mon enrollement token a expiré et j'arrive pas à me connecter à Kibana
# Regénérer un enrollement
docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
### Partie 3 : API Elasticsearch
```
## Partie 1 : CRUD opérations d'Elastic Search avec Kibana
Aller dans Kibana, choisir Dev Tools>Console
#### Q1. Ajouter une personne qui s'appelle Brayan qui a 23 ans et qui a un solde 10000 dans l'index customer, on donne 1 comme son ID
Donnée Json:
>{
"name" : "Brayan",
"age" : 23,
"balance" : 10000}
Résultat attendu :
> {
"_index": "customer",
"_id": "1",
"_version": 4,
"result": "created",
"_shards": {
$~~~~~~~~~~$ "total": 2,
$~~~~~~~~~~$ "successful": 1,
$~~~~~~~~~~$"failed": 0
},
"_seq_no": 4,
"_primary_term": 1
}
#### Q2. Ajouter 10000 dans le solde de Brayan
Résultat attendu :
>{
"_index": "customer",
"_id": "1",
"_version": 10,
"result": "updated",
"_shards": {
$~~~~~~~~~~$ "total": 2,
$~~~~~~~~~~$ "successful": 1,
$~~~~~~~~~~$ "failed": 0
$~~~~~$},
"_seq_no": 10,
"_primary_term": 1
}
#### Q3. Get l'information de Brayan (Indice : son ID est 1)
Résultat attendu :
> {
"_index": "customer",
"_id": "1",
"_version": 11,
"_seq_no": 11,
"_primary_term": 1,
"found": true,
"_source": {
$~~~~~~~~~~$"name": "Brayan",
$~~~~~~~~~~$"age": 23,
$~~~~~~~~~~$"balance": 20000
$~~~~~$}
}
#### Q4. Ajouter des personnes dans l'index customer
**Note** Pour ajouter plusieurs documents en même temps, nous allons utiliser la requête POST nomDeIndex/_bulk
Donnée Json:
> { "create":{ } }
{ "name" : "toto","age" : 2,"balance" : 1000}
{ "create":{ } }
{ "name" : "titi","age" : 60,"balance" : 5000}
{ "create":{ } }
{ "name" : "tata","age" : 30,"balance" : 200}
{ "create":{ } }
{ "name" : "tutu","age" : 15,"balance" : 0}
Résultat attendu :
> {
"took": 6,
"errors": false,
"items": [
{
"create": {
$~~~~~~~~~~$"_index": "customer",
$~~~~~~~~~~$"_id": "vVNv6IUBKQImO5wM_QrR",
$~~~~~~~~~~$"_version": 1,
$~~~~~~~~~~$"result": "created",
$~~~~~~~~~~$"_shards": {
$~~~~~~~~~~~~~~~~~~~~$"total": 2,
$~~~~~~~~~~~~~~~~~~~~$"successful": 1,
$~~~~~~~~~~~~~~~~~~~~$"failed": 0
$~~~~~~~~~~$},
$~~~~~~~~~~$"_seq_no": 12,
$~~~~~~~~~~$"_primary_term": 1,
$~~~~~~~~~~$"status": 201
$~~~~~~$ }
$~~~$ }, etc...]}
On peut constacter que les IDs des documents sont distribués automatiquement par ES avec la requête POST
#### Q5. Trouver le client qui s'appele toto en utilisant la "query match"
Résultat attendu
>{
"took": 2,
"timed_out": false,
"_shards": {
$~~~~~~~~~~$"total": 1,
$~~~~~~~~~~$"successful": 1,
$~~~~~~~~~~$"skipped": 0,
$~~~~~~~~~~$"failed": 0
},
"hits": {
$~~~~~~~~~~$"total": {
$~~~~~~~~~~~~~~~$"value": 1,
$~~~~~~~~~~~~~~~$"relation": "eq"
},
"max_score": 1.3862942,
"hits": [{
$~~~~~~~~~~$"_index": "customer",
$~~~~~~~~~~$"_id": "vVNv6IUBKQImO5wM_QrR",
$~~~~~~~~~~$"_score": 1.3862942,
$~~~~~~~~~~$"_source": {
$~~~~~~~~~~~~~~~$"name": "toto",
$~~~~~~~~~~~~~~~$"age": 2,
$~~~~~~~~~~~~~~~$"balance": 1000
$~~~~~~~~~~~~~$}
$~~~~~~~~~$}]
$~~~~~~$}
}
#### Q6. Trouver les clients qui sont majeurs. (Indice : on peut utiliser la query range, avec opération "gte" qui signifie >= )
Résultat attendu
> On a 3 hits en total, et dans le champs "hits" on peut retrouver Brayan, titi et tata.
#### Q7. Trouver le solde le plus élevé. (Indice : on peut utiliser l'aggregation max)
Résultat attendu
> On peut retrouver dans le résultat :
"aggregations": {
$~~~~~~~~~$"maxBalance": {
$~~~~~~~~~~~~~~$"value": 20000
$~~~~~~~~~~~~~$}
}
#### Q8. Calculer le solde moyen de cet index
> On peut retrouver dans le résultat :
"aggregations": {
$~~~~~~~~~$"avg_balance": {
$~~~~~~~~~~~~~~$"value": 5240
$~~~~~~~~~~~~~$}
}
#### Q9. Calculer la proportion de personnes dont le solde est strictement inférieur à 1000
(pas sur pour cette question)
## Partie 2 : API Elasticsearch
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment