Elastic search
Moteur de recherche
Crée en 2010 par Shay Banon
Basé sur Apache Lucene (+multi-nodes)
Développé en Java
Open source (Licence Apache)
La société a été crée en 2012
La version courante est 2.0
Site officiel: https://www.elastic.co/
2. Jemli Fathi
Troisième année ingénierie génie logiciel à ISSATSo
Vice président du Tunisian Big Data and Cloud Computing Community
3. ● Moteur de recherche
○ Crée en 2010 par Shay Banon
○ Basé sur Apache Lucene (+multi-nodes)
○ Développé en Java
○ Open source (Licence Apache)
○ La société a été crée en 2012
○ La version courante est 2.0
○ Site officiel: https://www.elastic.co/
Elastic search ?
4. ● Les clients
○ Facebook
○ Wikipédia
○ Banque de France
○ etc
5. Un moteur de recherche ?
● Indexation efficace des données
● Recherche et indexation portant sur tous les champs / combinaison de champs
● Analyse des données
● Recherche de texte
● Filtration
● Classement par pertinence
6. Pourquoi utiliser un moteur de recherche ?
● Une base de données(relationnelle surtout) n’est pas conçue pour la recherche
○ Les jointures
○ Les contraintes
7. Pourquoi Elasticsearch ?
● Open source
● Cache la complexité d’Apache Lucene
● Accessible à travers le cloud
● Une collection de produits très performants
9. Installation
● Rendez vous sur https://www.elastic.
co/downloads/elasticsearch
● Choisissez la version stable
● Décompressez l’archive
● Lancez l’agent Elasticsearch
○ Windows: elasticsearch.bat
○ Linux: ./bin/elasticsearch
● Vérifiez qu’Elasticsearch est en marche
en allant sur http://localhost:9200/
10. Installation de l’extension Sense
● Allez sur https://chrome.google.com/webstore/detail/sense-
beta/lhjgkmllcaadmopgmanpapmpjgmfcfig?utm_source=chrome-ntp-icon
● Ajouter l’extension Sense à Google Chrome
● Ouvrirez l’extension et donnez localhost:9200 comme serveur
On est parti !
11. Installation de l’extension ES Toolbox
● Allez sur https://chrome.google.com/webstore/detail/sense-
beta/lhjgkmllcaadmopgmanpapmpjgmfcfig?utm_source=chrome-ntp-icon
● Ajouter l’extension ES Toolbox à Google Chrome
● Ouvrirez l’extension et donnez localhost:9200 comme url en haut à gauche
On est parti !
13. Sauvegarder des données dans Elasticsearch
POST /bd3c/formation
{
"titre": "Elastic search",
"duree": 60,
"tags": ["elasticsearch", "nosql", "json"],
"prix":100
}
● “_id”: code unique varie suivant la
version
● “version”: un numéro qui indique
la version de ce documentOn appelle:
● “bd3c”: un index
● “formation”: type
14. Sélectionner des données dans Elasticsearch
GET /bd3c/formation/AVFzwj5sTY7bO17jCaPH
avec:
AVFzwj5sTY7bO17jCaPH: est l’id du document
ajouté précédemment
POST /bd3c/formation/_search
{
"query":{
"match_all": {}
}
}
Pour Sélectionner tous documents sous
formation
15. Modifier des données dans Elasticsearch
POST /bd3c/formation
{
"titre": "Langage R",
"duree": 30,
"tags": ["R", "data_mining", "statistics", "data_statistics"],
"prix":150
}
PUT /bd3c/formation/AVF0EhaSTY7bO17jCaPS
{
"titre": "Langage R",
"duree": 30,
"tags": ["R", "data_mining", "statistics", "data_analysis"],
"prix":100
}
16. Supprimer des données dans Elasticsearch
DELETE /bd3c/formation/AVFzzOuvTY7bO17jCaPL
GET /bd3c/formation/AVFzzOuvTY7bO17jCaPL
17. La recherche avec Elasticsearch
POST /bd3c/formation/_search
{
"query":{
"match": {"tags":"nosql"}
}
}
18. La recherche avec Elasticsearch
POST /bd3c/formation/_search
{
"query":{
"query_string":{
"query":"nosql"
}
}
}
POST /bd3c/formation/_search
{
"query":{
"query_string":{
"query":"redis"
, "fields": ["tags"]
}
}
}
POST /bd3c/formation/_search
{
"query":{
"query_string":{
"query":"tags:redis titre:Elastic search"
}
}
}
POST /bd3c/formation/_search
{
"query":{
"query_string":{
"query":"nosq~"
}
}
}
19. Manipulation de Elasticsearch avac Java
● On va utiliser Resty pour les appels
REST
○ Avec Maven
<dependency>
<groupId>us.monoid.web</groupId>
<artifactId>resty</artifactId>
<version>0.3.2</version>
</dependency>
○ Lien
http://repo2.maven.
org/maven2/us/monoid/web/resty/0.3.2
/resty-0.3.2.jar
https://beders.github.io/Resty/Resty/Overview.
html
20. Manipulation de Elasticsearch avac Java
try {
Resty resty = new Resty();
JSONObject jSONObject = resty.json("http://localhost:9200/bd3c/formation/AVFz9pkbTY7bO17jCaPR").
toObject();
System.out.println("Le document entier: "+jSONObject.getString("_source"));
JSONObject result = jSONObject.getJSONObject("_source");
String titre = result.getString("titre");
System.out.println("La valeur du titre"+titre);
} catch (Exception e) {
e.printStackTrace(); }
21. Vue d’ensemble sur Logstash
● Stocker, traiter et redirectionner les évènements et les
messages(exemple: les messages LOG).
● Les sources des données: des fichiers, des paquets
(TCP, UDP) et d’autres types de messages(Twitter, etc).
● Filtres avec des motifs prédéfinies.
● Les résultats: stocker ou envoyer vers de multiples
programmes et supports, principalement Elasticsearch,
Redis, Nagios, des fichiers.
24. Vue d’ensemble sur Kibana
● Plate forme de visualisation en temps réel de
données open source pour Elastic search.
● Des composants graphiques riches: Barres, des
camemberts(pie charts), nuage de points, des
cartes, etc.