1
REALISE PAR:
ELFILALI TAOUFIQ
2018/2019
1
2
3
4
5
6
plan
Introduction
La bonne pratique Ealstic Stack
Les bases d’Elasticsearch
Installation et Pratique
Mapping
ElasticSearch vs Hadoop
2
ElasticSearch est un moteur de recherche Open Source(Apache 2). Il utilise
la librairie Apache Lucene et indexe les données sous forme de documents.
Sa mise en place est facile et rapide.
Il possède des avantages indéniables dont :
 recherche en quasi temps réel
 scalable, Haute disponibilité
 automatiquement sauvegardé et répliqué
 API REST
La Première version a été en 2010
La dernière version est 6.4.3 publié le 06 Novembre 2018
3
Introduction
Logstash est un pipeline de traitement de
données côté serveur qui ingère des données
provenant de plusieurs sources simultanément,
les transforme et les envoie ensuite dans une
"réserve" comme Elasticsearch, et
un ETL (initialement destiné aux logs).
Kibana permet aux utilisateurs de visualiser
des données avec des diagrammes et des
graphiques dans Elasticsearch.
4
Introduction
5
Introduction
6
Simplicité
Elasticsearch dissimule toute la complexité derrière l'API. Il est possible de l'utiliser
avec la configuration par défaut, ou de tout redéfinir manuellement : indexation,
réplication, clusterisation, tout se fait automatiquement.
Scalabilité,vitesse
D'un serveur local à une architecture distribuée gérant des péta octets de données
Des recherches quasiment en temps réel.
Modulaire
Un système de plugins permet d'ajouter des fonctionnalités à celles de base proposées par
Elasticsearch :
Sécurité, monitoring, alerting, reporting
Pourquoi Elasticsearch?
Les bases de
Elasticsearch
7
Document
Document : Un simple enregistrement dans un shard Elasticsearch.
Un document est structuré comme un objet JSON et doit appartenir à
un type (qui défini sa structure).
Exemple d'un document de type Ville
8
Les bases d’Elasticsearch
{
"title" : "Star Wars",
"directors" : ["George Lucas"],
"release_date" : "1977-05-25T00:00:00Z",
"rating" : 8.7,
"genres" : ["Action","Adventure","Fantasy","Sci-Fi"],
"plot" : "Luke Skywalker joins forces with a Jedi Knight, a cocky pilot, a wookiee and two droids to
save the universe from the Empire's world-destroying battle-station, while also attempting to
rescue Princess Leia from the evil Darth Vader.",
"actors" : ["Mark Hamill","Harrison Ford","Carrie Fisher"],
"year" : 1977
}
Noeud
Correspond à un processus d'Elasticsearch en cours d’exécution.
Cluster
Cluster : Il est composé d’un à plusieurs Node. Un noeud maître est
choisi, il sera remplacé en cas de défaillance.
Shard
Correspond à une instance Lucène.
9
Les bases d’Elasticsearch
Index
Un index est un espace logique de stockage de documents de même
type, découpé sur un à plusieurs Primary Shards.
Un index peut être répliqué sur zéro ou plusieurs Secondary Shards
Primary Shards
C'est une partition de l'index. Par défaut, l'index est découpé en 5
Shards Primary. Il n'est pas possible de changer le nombre de
Shards après sa création.
Secondary Shards
Il s'agit de de copies de Primary Shards. Il peut y en avoir zéro à
plusieurs par Primary Shard. Ce comportement est adopté à des fin de
performance et de sécurisation des données.
10
Les bases d’Elasticsearch
11
Les bases d’Elasticsearch
12
Les bases d’Elasticsearch
13
Les bases d’Elasticsearch
SGBDR ELASTICSEARCH
Base de données Index ES
Tables de la BD Indices de l’index ES
Colonnes de la table Types de l’indice /propriétés des
documents JSON
Lignes de la table Documents de l’indice
{
"title" : "Star Wars",
"directors" : ["George Lucas"],
"release_date" : "1977-05-25T00:00:00Z",
"rating" : 8.7,
"genres" : ["Action","Adventure","Fantasy","Sci-Fi"],
}
Installation
et pratique
14
 On peut même ignorer complètement l'installation en utilisant le service hébergé
Elasticsearch sur Elastic Cloud. Vous pouvez essayer le service hébergé
gratuitement.
15
 Elasticsearch requiert au moins Java 8,Autant
dire qu'avant d'installer Elasticsearch, vérifiez
d'abord votre version de Java
java -version
echo $JAVA_HOME
 Téléchargez Elasticsearch 6.4.3 comme suit:
curl -L -O
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-
6.4.3.tar.gz
installation
16
 Puis extrayez-le comme suit: tar -xvf elasticsearch-6.4.3.tar.gz
 Il va ensuite créer un tas de fichiers et
de dossiers dans notre répertoire
actuel. Nous allons ensuite dans le
répertoire bin comme suit
cd elasticsearch-6.4.3/bin
 Et maintenant, nous sommes prêts à démarrer
notre nœud et notre cluster unique:
./elasticsearch
installation
installation
ElasticSearch offre une API REST permettant d’effectuer tous
types d’opération. Il supporte les méthodes HTTP (GET, PUT,
POST et DELETE).
curl -XPUT 'http://localhost:9200/[index]/[type]/[id]/[action]'
Index : Nom de l’index
Type : Nom du type du document
Id : ID du document
Action : Action à effectuer
18
pratique
Création d’un index
19
pratique
Suppression d’un index
Chercher un index
20
Indexer un document
pratique
réponse
21
Modifier le document _doc
pratique
22
Supprimer réponse
pratique
Rechercher un document
23
réponse
pratique
24
Le Mapping
25
Elasticsearch est ‘sans schéma’
 Configurer seulement au besoin
 Mapping explicite créé pour les types non configurés
 Mapping dynamique: appliquer les mapping par défaut
pour les informations extraites du document JSON.
Le Mapping
26
Mapping = Définir comment les documents sont
analysés et indexés:
 Les types des champs/objets du document.
 Les relations entre les documents.
 La gestion des méta-données du document.
 La définition de la pertinence par champ/document (boosting)
Le Mapping
Le Mapping pourquoi?
27
 Adapter l’analyse de données à un domaine métier spécifique
 Adapter la recherche aux utilisateurs :
terminologies spécifiques, multi-langages.
 Certaines fonctionnalités l’exigent : Tri,Agrégation
Le Mapping dynamique
28
 Les champs et les types de mappage n'ont pas besoin d'être
définis avant d'être utilisés.
 Grâce au mappage dynamique, de nouveaux noms de champs
seront ajoutés automatiquement, simplement en indexant un
document.
 Les règles de mappage dynamique peuvent être configurées
pour personnaliser le mappage utilisé pour les nouveaux
champs.
Le Mapping explicite
29
 Vous en savez plus sur vos données qu'Elasticsearch ne peut
en deviner.
 Ainsi, bien que le mappage dynamique puisse être utile pour
commencer, vous souhaiterez éventuellement spécifier vos
propres mappages explicites.
 Vous pouvez créer des mappages de champs lorsque vous créez
un index et vous pouvez ajouter des champs à un index
existant avec l'API de mappage PUT.
Exemple de Mapping
30
Un mappage peut être spécifié lors de la création d'un index, comme suit:
31
Elasticsearch
vs
Hadoop
Les principales différences
32
Hadoop offre beaucoup plus de flexibilité avec une variété d’outils, par rapport à ES.
Hadoop peut stocker une grande quantité de données, contrairement à ES.
Hadoop peut gérer des traitements étendus et une logique complexe, où ES ne peut
gérer qu'un traitement limité et un type de logique d'agrégation de base
comparaison
33
Base de comparaison Hadoop ElasticSearch
Principe fonctionnel Basé sur MapReduce Basé sur JSON et donc langage spécifique à un
domaine
complexité La manipulation de MapReduce est relativement
complexe
DSL basé sur JSON est assez facile à
comprendre et à mettre en œuvre
schéma Hadoop est basé sur la technologie NoSQL. Il
est donc facile de télécharger des données dans
n'importe quel format de valeur clé
recommande que les données soient au format
générique clé-valeur avant le téléchargement
Transfert groupé Le transfert groupé n'est pas un défi ici Les ES possèdent une certaine limite tampon,
Mais cela pourrait être prolongé après avoir
analysé l'échec survenu à quel point
LA BONNE PRATIQUE
ELASTIC STACK
34
Mise en place de Logstash
Logstash est un outil très puissant et polyvalent.
Décomposition du traitement en 3 zones :
 Les entrées
 Les filtres
 Les sorties
Il est très polyvalent car il est capable de traiter tout ce qui
ressemble de près ou de loin à du texte.
Les plugins de sortie sont également très variés.
36
36
Les entrées
# Input à partir d'un fichier
input {
file {
path => ...
}
}
# Input à partir d'une base de données MySQL
input {
jdbc {
jdbc_driver_library => "/path/to/mysql-connector-java-5.1.33-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://host:port/database"
jdbc_user => "user"
jdbc_password => "password"
statement => "SELECT ..."
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
}
}
37
Les filtres
c'est sa capacité à pouvoir filtrer tous les types possibles de données:
 d'extraire les données
 d'analyser les données
 de nettoyer les donnée
filter {
# Lecture d'un fichier csv
csv {
columns => ["col1","col2","col3"]
separator => ";"
}
}
38
Les sorties
# Sortie vers la console
output {
stdout { codec => rubydebug }
}
# Sotie vers une base elasticsearch
output {
elasticsearch {
host => "elasticsearch_host"
cluster => "elastic_cluster"
port => "9300"
index => "mon-index-%{+YYYY.MM.dd}"
protocol => "transport"
}
}
39
Mise en place de kibana
Kibana est un outil graphique qui permet de requêter une base
elasticsearch et de réaliser des graphes à partir des données
qu'elle contient.
40
Mise en place de kibana
Kibana se compose de plusieurs onglets :
 Discover : Cet onglet permet de faire des recherches via la barre dédiée et de
voir les résultats bruts stockés dans la base elasticsearch
 Visualize : Cet onglet permet de réaliser différents types de graphes à partir
d'une requête enregistrée ou à partir d'une nouvelle requête
 Dashboard : Cet onglet permet de regrouper plusieurs graphes réalisés au
préalable dans l'onglet visualize sur une même page
Résumé
41
Merci pour votre
attention
WIBOGRAPHIE
http://elastic.co
https://stph.scenari-community.org/contribs/nos/es5/co/es5.html
https://www.educba.com/hadoop-vs-elasticsearch/
Des questions?
42

Elastic serach

  • 1.
  • 2.
    1 2 3 4 5 6 plan Introduction La bonne pratiqueEalstic Stack Les bases d’Elasticsearch Installation et Pratique Mapping ElasticSearch vs Hadoop 2
  • 3.
    ElasticSearch est unmoteur de recherche Open Source(Apache 2). Il utilise la librairie Apache Lucene et indexe les données sous forme de documents. Sa mise en place est facile et rapide. Il possède des avantages indéniables dont :  recherche en quasi temps réel  scalable, Haute disponibilité  automatiquement sauvegardé et répliqué  API REST La Première version a été en 2010 La dernière version est 6.4.3 publié le 06 Novembre 2018 3 Introduction
  • 4.
    Logstash est unpipeline de traitement de données côté serveur qui ingère des données provenant de plusieurs sources simultanément, les transforme et les envoie ensuite dans une "réserve" comme Elasticsearch, et un ETL (initialement destiné aux logs). Kibana permet aux utilisateurs de visualiser des données avec des diagrammes et des graphiques dans Elasticsearch. 4 Introduction
  • 5.
  • 6.
    6 Simplicité Elasticsearch dissimule toutela complexité derrière l'API. Il est possible de l'utiliser avec la configuration par défaut, ou de tout redéfinir manuellement : indexation, réplication, clusterisation, tout se fait automatiquement. Scalabilité,vitesse D'un serveur local à une architecture distribuée gérant des péta octets de données Des recherches quasiment en temps réel. Modulaire Un système de plugins permet d'ajouter des fonctionnalités à celles de base proposées par Elasticsearch : Sécurité, monitoring, alerting, reporting Pourquoi Elasticsearch?
  • 7.
  • 8.
    Document Document : Unsimple enregistrement dans un shard Elasticsearch. Un document est structuré comme un objet JSON et doit appartenir à un type (qui défini sa structure). Exemple d'un document de type Ville 8 Les bases d’Elasticsearch { "title" : "Star Wars", "directors" : ["George Lucas"], "release_date" : "1977-05-25T00:00:00Z", "rating" : 8.7, "genres" : ["Action","Adventure","Fantasy","Sci-Fi"], "plot" : "Luke Skywalker joins forces with a Jedi Knight, a cocky pilot, a wookiee and two droids to save the universe from the Empire's world-destroying battle-station, while also attempting to rescue Princess Leia from the evil Darth Vader.", "actors" : ["Mark Hamill","Harrison Ford","Carrie Fisher"], "year" : 1977 }
  • 9.
    Noeud Correspond à unprocessus d'Elasticsearch en cours d’exécution. Cluster Cluster : Il est composé d’un à plusieurs Node. Un noeud maître est choisi, il sera remplacé en cas de défaillance. Shard Correspond à une instance Lucène. 9 Les bases d’Elasticsearch
  • 10.
    Index Un index estun espace logique de stockage de documents de même type, découpé sur un à plusieurs Primary Shards. Un index peut être répliqué sur zéro ou plusieurs Secondary Shards Primary Shards C'est une partition de l'index. Par défaut, l'index est découpé en 5 Shards Primary. Il n'est pas possible de changer le nombre de Shards après sa création. Secondary Shards Il s'agit de de copies de Primary Shards. Il peut y en avoir zéro à plusieurs par Primary Shard. Ce comportement est adopté à des fin de performance et de sécurisation des données. 10 Les bases d’Elasticsearch
  • 11.
  • 12.
  • 13.
    13 Les bases d’Elasticsearch SGBDRELASTICSEARCH Base de données Index ES Tables de la BD Indices de l’index ES Colonnes de la table Types de l’indice /propriétés des documents JSON Lignes de la table Documents de l’indice { "title" : "Star Wars", "directors" : ["George Lucas"], "release_date" : "1977-05-25T00:00:00Z", "rating" : 8.7, "genres" : ["Action","Adventure","Fantasy","Sci-Fi"], }
  • 14.
  • 15.
     On peutmême ignorer complètement l'installation en utilisant le service hébergé Elasticsearch sur Elastic Cloud. Vous pouvez essayer le service hébergé gratuitement. 15  Elasticsearch requiert au moins Java 8,Autant dire qu'avant d'installer Elasticsearch, vérifiez d'abord votre version de Java java -version echo $JAVA_HOME  Téléchargez Elasticsearch 6.4.3 comme suit: curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch- 6.4.3.tar.gz installation
  • 16.
    16  Puis extrayez-lecomme suit: tar -xvf elasticsearch-6.4.3.tar.gz  Il va ensuite créer un tas de fichiers et de dossiers dans notre répertoire actuel. Nous allons ensuite dans le répertoire bin comme suit cd elasticsearch-6.4.3/bin  Et maintenant, nous sommes prêts à démarrer notre nœud et notre cluster unique: ./elasticsearch installation
  • 17.
  • 18.
    ElasticSearch offre uneAPI REST permettant d’effectuer tous types d’opération. Il supporte les méthodes HTTP (GET, PUT, POST et DELETE). curl -XPUT 'http://localhost:9200/[index]/[type]/[id]/[action]' Index : Nom de l’index Type : Nom du type du document Id : ID du document Action : Action à effectuer 18 pratique
  • 19.
    Création d’un index 19 pratique Suppressiond’un index Chercher un index
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
    25 Elasticsearch est ‘sansschéma’  Configurer seulement au besoin  Mapping explicite créé pour les types non configurés  Mapping dynamique: appliquer les mapping par défaut pour les informations extraites du document JSON. Le Mapping
  • 26.
    26 Mapping = Définircomment les documents sont analysés et indexés:  Les types des champs/objets du document.  Les relations entre les documents.  La gestion des méta-données du document.  La définition de la pertinence par champ/document (boosting) Le Mapping
  • 27.
    Le Mapping pourquoi? 27 Adapter l’analyse de données à un domaine métier spécifique  Adapter la recherche aux utilisateurs : terminologies spécifiques, multi-langages.  Certaines fonctionnalités l’exigent : Tri,Agrégation
  • 28.
    Le Mapping dynamique 28 Les champs et les types de mappage n'ont pas besoin d'être définis avant d'être utilisés.  Grâce au mappage dynamique, de nouveaux noms de champs seront ajoutés automatiquement, simplement en indexant un document.  Les règles de mappage dynamique peuvent être configurées pour personnaliser le mappage utilisé pour les nouveaux champs.
  • 29.
    Le Mapping explicite 29 Vous en savez plus sur vos données qu'Elasticsearch ne peut en deviner.  Ainsi, bien que le mappage dynamique puisse être utile pour commencer, vous souhaiterez éventuellement spécifier vos propres mappages explicites.  Vous pouvez créer des mappages de champs lorsque vous créez un index et vous pouvez ajouter des champs à un index existant avec l'API de mappage PUT.
  • 30.
    Exemple de Mapping 30 Unmappage peut être spécifié lors de la création d'un index, comme suit:
  • 31.
  • 32.
    Les principales différences 32 Hadoopoffre beaucoup plus de flexibilité avec une variété d’outils, par rapport à ES. Hadoop peut stocker une grande quantité de données, contrairement à ES. Hadoop peut gérer des traitements étendus et une logique complexe, où ES ne peut gérer qu'un traitement limité et un type de logique d'agrégation de base
  • 33.
    comparaison 33 Base de comparaisonHadoop ElasticSearch Principe fonctionnel Basé sur MapReduce Basé sur JSON et donc langage spécifique à un domaine complexité La manipulation de MapReduce est relativement complexe DSL basé sur JSON est assez facile à comprendre et à mettre en œuvre schéma Hadoop est basé sur la technologie NoSQL. Il est donc facile de télécharger des données dans n'importe quel format de valeur clé recommande que les données soient au format générique clé-valeur avant le téléchargement Transfert groupé Le transfert groupé n'est pas un défi ici Les ES possèdent une certaine limite tampon, Mais cela pourrait être prolongé après avoir analysé l'échec survenu à quel point
  • 34.
  • 35.
    Mise en placede Logstash Logstash est un outil très puissant et polyvalent. Décomposition du traitement en 3 zones :  Les entrées  Les filtres  Les sorties Il est très polyvalent car il est capable de traiter tout ce qui ressemble de près ou de loin à du texte. Les plugins de sortie sont également très variés. 36
  • 36.
    36 Les entrées # Inputà partir d'un fichier input { file { path => ... } } # Input à partir d'une base de données MySQL input { jdbc { jdbc_driver_library => "/path/to/mysql-connector-java-5.1.33-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://host:port/database" jdbc_user => "user" jdbc_password => "password" statement => "SELECT ..." jdbc_paging_enabled => "true" jdbc_page_size => "50000" } }
  • 37.
    37 Les filtres c'est sacapacité à pouvoir filtrer tous les types possibles de données:  d'extraire les données  d'analyser les données  de nettoyer les donnée filter { # Lecture d'un fichier csv csv { columns => ["col1","col2","col3"] separator => ";" } }
  • 38.
    38 Les sorties # Sortievers la console output { stdout { codec => rubydebug } } # Sotie vers une base elasticsearch output { elasticsearch { host => "elasticsearch_host" cluster => "elastic_cluster" port => "9300" index => "mon-index-%{+YYYY.MM.dd}" protocol => "transport" } }
  • 39.
    39 Mise en placede kibana Kibana est un outil graphique qui permet de requêter une base elasticsearch et de réaliser des graphes à partir des données qu'elle contient.
  • 40.
    40 Mise en placede kibana Kibana se compose de plusieurs onglets :  Discover : Cet onglet permet de faire des recherches via la barre dédiée et de voir les résultats bruts stockés dans la base elasticsearch  Visualize : Cet onglet permet de réaliser différents types de graphes à partir d'une requête enregistrée ou à partir d'une nouvelle requête  Dashboard : Cet onglet permet de regrouper plusieurs graphes réalisés au préalable dans l'onglet visualize sur une même page
  • 41.
  • 42.

Notes de l'éditeur

  • #4 Kibana et Logstach
  • #5 Les grandes sociétés qui l’utilisent
  • #6 Pourquoi elasticsearch?
  • #9 Schéma générale d’un cluster
  • #10 Mais à la différence de MongoDB, le nombre de shards est est défini à la création de l'index et ne peut pas être modifié par la suite. Tout à fait : en ajoutant un noeud, Elasticsearch va équilibrer les shards sur les différents noeuds. Pour assurer la disponibilité des données en cas de crash, il faut activer la réplication.
  • #12 Les index sont divisés en shards et les shards ont des réplicas. Les shards et les réplicas sont distribués entre les différents nœuds d'un cluster Elasticsearch : Le nombre de shards détermine la capacité du cluster à distribuer les opérations d'écriture entre les différents nœuds. S'ils ne sont pas assez nombreux, l'ajout de nœuds n'améliorera pas les performances d'écriture. Et s'ils sont trop nombreux, ils encombreront la RAM. Le nombre de réplicas détermine la capacité du cluster à distribuer les opérations de lecture, ainsi que la tolérance aux pannes. S'ils sont trop nombreux, ils occuperont un espace disque trop important. Et si leur nombre est faible, cela aura une incidence sur les performances de lecture et la tolérance aux pannes.
  • #26 C’est quoi le mapping
  • #27 Pourqoui?
  • #28 Mapp dynamique
  • #29 Mapp explicite
  • #35 Logstash
  • #36 Les entrées
  • #37 filtres
  • #38 Les sorties
  • #39 kibana