ElasticSearch
Qu'est-ce que la ELK Stack?
Jusqu'à il y a un an ou deux, ELK Stack était une collection de trois produits
open source - Elasticsearch , Logstash et Kibana - tous développés, gérés et
maintenus par Elastic .
Elasticsearch est un moteur de recherche et d'analyse open source en texte intégral,
basé sur le moteur de recherche Apache Lucene.
Logstash est un agrégateur de journaux qui collecte des données à partir de diverses
sources d'entrée, exécute différentes transformations et améliorations, puis expédie
les données vers diverses destinations de sortie prises en charge.
Kibana est une couche de visualisation qui fonctionne au-dessus d'Elasticsearch,
offrant aux utilisateurs la possibilité d'analyser et de visualiser les données.
ElasticSearch
Architecture de ELK Stack
La figure suivante montre l'ordre correct du flux de journaux dans ELK.
les journaux générés à partir de diverses sources sont collectés et traités par Logstash, en
fonction des critères de filtre fournis. Logstash dirige ensuite ces journaux vers
Elasticsearch qui analyse et recherche ensuite les données. Enfin, à l'aide de Kibana, les
journaux sont visualisés et gérés conformément aux exigences.
ElasticSearch
Installation
Accédez à https://www.elastic.co/downloads et décompressez les trois fichiers pour
obtenir leurs fichiers de dossiers.
Ouvrez maintenant le dossier elasticsearch et accédez à son dossier bin.
Double-cliquez sur le fichier elasticsearch.bat pour démarrer le serveur elasticsearch.
ElasticSearch
Installation
Installer Kibana
Ouvrez maintenant le dossier kibana et accédez à son dossier bin.
Double-cliquez sur le fichier kibana.bat pour démarrer le serveur elasticsearch.
Pour vérifier si le serveur a démarré ou non, accédez au navigateur et tapez localhost:
5601 .
Installation de Logstash
Ouvrez maintenant le dossier logstash.
Pour tester votre installation de logstash, ouvrez l'invite de commande et accédez à votre
dossier logstash. Tapez maintenant:
binlogstash -e 'input { stdin { } } output { stdout {} }'Attendez que «Pipeline main started» s'affiche sur l'invite de commande.
Entrez maintenant un message à l'invite de commande et appuyez sur Entrée.
Logstash ajoute des informations d'horodatage et d'adresse IP au message et les affiche à
l'invite de commande.
ElasticSearch
ElasticSearch
Elasticsearch est un moteur de recherche
hautement évolutif qui s'exécute au-dessus du
moteur Lucene basé sur Java. Il s'agit
essentiellement d'une base de données NoSQL.
Il stocke les données à l'intérieur des
documents au lieu des tables et des schémas.
Lorsque vous travaillez avec Elasticsearch,
vous devez suivre trois étapes principales:
• Indexation
• Cartographie
• Recherche
ElasticSearch
ElasticSearch
Créer un index
Vous pouvez utiliser la commande suivante pour créer un index
Si l'index est créé, vous pouvez voir la sortie suivante
ElasticSearch
ElasticSearch
Ajouter des données
Elasticsearch stockera les documents que nous ajoutons à l'index, comme indiqué dans le
code suivant.
Ajoutez un autre document similaire.
ElasticSearch
ElasticSearch
PUT
Il permet d'ajouter ou de mettre à jour le document JSON
Lorsque l'ID n'est pas spécifié dans l'opération d'indexation, Elasticsearch génère
automatiquement l'ID de ce document.
ElasticSearch
ElasticSearch
GET
DELETE
Permet d'extraire un objet de type JSON
Vous pouvez également spécifier les champs que vous souhaitez dans votre
résultat à partir de ce document particulier.
Vous pouvez supprimer un index, un mappage ou un document particulier
en envoyant une demande HTTP DELETE à Elasticsearch.
ElasticSearch
ElasticSearch
Recherche
Elasticsearch nous permet de rechercher les documents présents dans tous
les index ou dans certains index spécifiques. Par exemple:
De nombreux paramètres peuvent être passés dans une opération de recherche
Une façon simple d'exprimer plusieurs critères de recherche consiste à
utiliser une requête bool. La requête bool vous permet d'utiliser une
combinaison d'autres requêtes, où chacune des conditions peut être placée
à l'aide d'une clause booléenne. Il existe trois clauses booléennes:
• must
• should
• must_not
ElasticSearch
ElasticSearch
La requête match_all
Il s'agit de la requête la plus élémentaire; il renvoie tout le contenu et avec
le score de 1.0 pour chaque objet.
ElasticSearch
ElasticSearch
Les requêtes full text - Correspondance de requête -
Cette requête fait correspondre un texte ou une phrase avec les valeurs d'un
ou plusieurs champs.
ElasticSearch
ElasticSearch
Les requêtes full text - correspondance multiple-
Cette requête fait correspondre un texte ou une phrase avec plusieurs
champs.
ElasticSearch
ElasticSearch
Les requêtes query string
Cette requête fait correspondre un texte ou une phrase avec plusieurs
champs.
ElasticSearch
ElasticSearch
Les requêtes query string
Cette requête revoit les documents où il y’a le terme ‘science’
ElasticSearch
ElasticSearch
Requêtes au niveau du terme
Ces requêtes concernent principalement des données structurées telles
que des nombres, des dates et des énumérations.
ElasticSearch
ElasticSearch
Requête de plage
Cette requête est utilisée pour rechercher les objets ayant des valeurs
entre les plages de valeurs données. Pour cela, nous devons utiliser des
opérateurs tels que:
gte - supérieur ou égal à
gt - supérieur à
lte - inférieur à égal à
lt - moins de
ElasticSearch
ElasticSearch
Requêtes composées
Ces requêtes sont une collection de différentes requêtes fusionnées les
unes avec les autres en utilisant des opérateurs booléens comme et, ou,
pas ou pour différents index ou en ayant des appels de fonction, etc.
ElasticSearch
ElasticSearch
L’agrégation
Elasticsearch nous permet de rechercher les documents présents dans tous
les index ou dans certains index spécifiques. Par exemple:
ElasticSearch
ElasticSearch
Agrégation de cardinalité
Cette agrégation donne le nombre de valeurs distinctes d'un champ
particulier.
ElasticSearch
ElasticSearch
Agrégation de statistiques étendue
Cette agrégation génère toutes les statistiques sur un champ numérique
spécifique dans les documents agrégés.
ElasticSearch
ElasticSearch
Agrégation max
Cette agrégation trouve la valeur maximale d'un champ numérique
spécifique dans les documents agrégés.
ElasticSearch
ElasticSearch
Exercices
Dans ces travaux pratiques, nous allons travailler avec un fichier json: big-
movies-elastic.json
Importer tout d’abord ce fichier de données avec Kibana et répondre aux
requêtes suivantes:
1) trouver les films « Star Wars », Que remarquez-vous pour les résultats ?
Proposez une variante.
2) Refaire la même requête en affichant seulement le titre et le réalisateur
3) Films “Star Wars” dont le réalisateur (directors) est “George Lucas”
4) Films dans lesquels “Harrison Ford” a joué
5) Films dans lesquels “Harrison Ford” a joué dont le résumé (plot)
contient “Jones”.
ElasticSearch
ElasticSearch
Exercices
6) Films dans lesquels “Harrison Ford” a joué dont le résumé (plot)
contient “Jones” mais sans le mot “Nazis”
7) Films de “James Cameron” dont le rang devrait être inférieur à 1000
(boolean + range query).
8) Films de “James Cameron” dont le rang doit être inférieur à 100
9) Films de “Quentin Tarantino” dont la note (rating) doit être supérieure à
5, sans être un film d’action ni un drame.
10) Films de “J.J. Abrams” sortis (released) entre 2010 et 2015
11) Donner la note (rating) moyenne des films.
12) Donner la note (rating) moyenne, et le rang moyen des films de George
Lucas.
ElasticSearch
ElasticSearch
Exercices
13) Donnez la note (rating) moyenne des films par année. Attention, il y a
ici une imbrication d’agrégats.
14) Donner la note (rating) minimum, maximum et moyenne des films par
année.
15) Donner le rang (rank) moyen des films par année et trier par ordre
décroissant.
16) Compter le nombre de films par tranche de note (0-1.9, 2-3.9, 4-5.9…).
Indice : group_range.
17) Donner le nombre d’occurrences de chaque genre de film.
ElasticSearch
ElasticSearch
Mise à jour d’un document
Si vous voulez mettre à jour seulement le nom d’une école. Vous pensez d’utiliser la
commande suivante
Vous allez remarquer que les autres champs sont perdus.
Pour vérifier le schéma de l’index, lancer la commande qui montre:
ElasticSearch
ElasticSearch
Mise à jour d’un document
En fait, pour mettre à jour un champs sans toucher les autres, il faut utiliser la
commande:
ElasticSearch
ElasticSearch
Déploiement
Pour savoir les nœuds sur lesquels ElasticSearch est déployé, lancer la commande:
1 2
Shard Replicat
2 3
Shard Replicat
3 1
Shard Replicat
ElasticSearch
ElasticSearch
Déploiement
Pour spécifier la configuration par nous même:
Pour vérifier la configuration de l’index:
"fielddata": true
ElasticSearch
ElasticSearch
Déploiement
Revenons à notre index ‘école’, la commande suivante cherche le mot ‘Ecole’ dans le
champs description
Explication
Char filter Tockenizer Tocken filter
ElasticSearch
ElasticSearch
Déploiement
Changer la description de l’école 1 en mettant le texte: « C’est une école d’ingénieurs
accréditée par l’état »
Cette commande permet de lemmatiser le texte en se basant sur un analyseur
Top Related