TP4 - Elasticsearch #
Information #
Le serveur Elasticsearch est disponible à l'adresse : https://es.course.larget.fr
Kibana est disponible sur : https://kibana.course.larget.fr.
Les identifiants de connexion sont : student
/ student
.
Vous pouvez utiliser n'importe quel client HTTP pour faire une requête vers Elasticsearch ou utiliser la fonctionnalité
devtools
de Kibana.
Voici un exemple pour faire une requête POST vers une url
<?php
//post a json {"a":1, "b":"test"} to an url using PHP
$url = 'http://username:password@es.course.larget.fr/';
$data = array('a' => 1, 'b' => 'test');
$data_string = json_encode($data);
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => $data_string
)
));
$result = file_get_contents($url, false, $context);
//npm install axios
const axios = require('axios').default.create({
baseURL: 'https://username:password@es.course.larget.fr/',
});
const data = {
a: 1,
b: "test"
};
(async () => {
let result = await axios.post('/test/_doc', data);
console.log(result.data);
})();
Exercice 1 #
Pour l'exercice 1, on va utiliser un index qui s'appellera votre_prenom
(sans accent).
- Insérer un document json qui contient votre nom votre prénom ainsi que votre âge. Quel est l'ID du document dans Elasticsearch ?
- Lister les documents de l'index
- Refaire les 2 premières actions. Que s'est-t-il passé dans la base ?
- Supprimez l'index.
- Insérer le même document qu'à la question 1, mais cette fois avec l'ID
student
. Listez les documents de l'index. - Modifiez votre age en utilisant la requête de la question 5.
- Supprimez le document à l'index
student
.
Dataset #
Pour la suite de l'exercice on va utiliser le dataset des lignes des pièces de shakespeare.
Ne téléchargez pas le dataset, utilisez plutôt l'index déjà mis à votre disposition qui s'appelle ?
GET /_cat/indices
Exercice 2 - Recherche #
- Trouver combien il y a de documents dans cet index en utilisant le
_cat/indices
- Trouver combien il y a de documents dans cet index en utilisant le
_count
- Listez tous les documents. Quelles sont les limites de la requête
match_all
? - Trouver quel personnage de quelle pièce et à quelle ligne a dit :
to be or not to be
en utilisantmatch
. - Combien y-a-t'il de réponses dans la requête ?
- Refaire la question mais en utilisant un "match_phrase".
- Effectuer une requête
fuzzy
pour trouver tout ce que le speakerHAMLOT
a dit. - En utilisant la requête
fuzzy
, trouver tout ce que le speakerJULLIET
a dit. - En utilisant une requête
match
et en précisant unefuzziness
à 10, combien detext_entry
contiennent le motRome
? Quel effet de bord ont les requêtes fuzzy ? - Trouver tous les documents qui contiennent le mot
wasp
mais qui ne sont pas dans la pièceTaming of the Shrew
. - Trouver tous les documents qui contiennent soit le mot
wasp
soitbees
et qui sont dans une pièce dont le nom commence parHenry
(HINT:wildcard
)
Exercice 3 - Aggregation #
À partir de maintenant, toutes les requêtes se feront en size=0
GET /shakespeare/_search?size=0
- Comptez le nombre de pièces différentes
- Listez toutes les pièces ainsi que le nombre de documents pour chacune d'elles.
- Listez le nombre de documents, par pièces puis par personnage.
- Pour chaque pièce, donnez l'acteur qui a le plus de répliques.
- Comptez le nombre de personnages par pièces.
- Pour la pièce
Romeo and Juliet
, donnez les 2 personnages qui parlent le plus ainsi que le nombre de dialogues de chacun. - Pour chaque pièce, donner le nombre moyen de répliques