why elasticsearch rocks!
DESCRIPTION
TRANSCRIPT
![Page 1: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/1.jpg)
Why
rocks !
AlpesJUG – 19 février 2013
Elasticsearch
![Page 2: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/2.jpg)
Tanguy Leroux● Consultant et Formateur @ Zenika● Elasticsearch Addict
● @tlrx● http://github.com/tlrx● [email protected]
![Page 3: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/3.jpg)
Un projet
+ 700 forks +3500 watchers +100 commiters GitHubApache 2 License
Open source
![Page 4: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/4.jpg)
Basé sur
Version 3.6.2, bientôt la 4.1
Apache lucene
![Page 5: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/5.jpg)
Une installation
Décompresser. Exécuter. Ça marche.
ZERO CONFIG
![Page 6: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/6.jpg)
Orienté
JSON
document
![Page 7: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/7.jpg)
{ "nom" : "Reinhardt", "prenom" : "Jean Django", "date_naissance" : "1910-10-23"}
personne
![Page 8: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/8.jpg)
{ "titre" : "Django Unchained", "genre" : "western", "date_sortie" : "2013-01-16"}
film
![Page 9: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/9.jpg)
Elasticsearch / SGBD
IndexType
Document Field
Mapping
Base de donnéesTableRow
ColumnSchema
→
→
→
→
→
![Page 10: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/10.jpg)
Elasticsearch est
La structure des documents peut évoluer avec le temps
SCHEMA LeSS
![Page 11: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/11.jpg)
{ "titre" : "Django Unchained", "genre" : "western", "date_sortie": "2013-01-16"}
Aujourd'hui
![Page 12: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/12.jpg)
{ "titre" : "Django Unchained", "genre" : "western", "date_sortie" : "2013-01-16", "realisateur" : { "nom" : "Tarantino", "prenom" : "Quentin" }, "nb_entrees" : 3159385, "acteurs" : [ { "nom" : "Foxx", "prenom" : "Jamie" }, { "nom" : "Waltz", "prenom" : "Christoph" }, { "nom" : "Tarantino", "prenom" : "Quentin" } ]}
demain
![Page 13: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/13.jpg)
{ "titre" : "Django Unchained", "genre" : "western", "date_sortie" : "2013-01-16", "realisateur" : { "nom" : "Tarantino", "prenom" : "Quentin" }, "nb_entrees" : 3159385, "acteurs" : [ { "nom" : "Foxx", "prenom" : "Jamie" }, { "nom" : "Waltz", "prenom" : "Christoph" }, { "nom" : "Tarantino", "prenom" : "Quentin" } ]}
Recherche de « tarantino »
![Page 14: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/14.jpg)
Recherche de « django »
{
"titre" : "Django Unchained", "genre" : "western",
"date_sortie" : "2013-01-16", "realisateur" : {
"nom" : "Tarantino", "prenom" : "Quentin"
},
"nb_entrees" : 3159385,
"acteurs" : [...]
}
{
"nom" : "Reinhardt",
"prenom" : "Jean Django",
"date_naissance" : "1910-10-23"
}
film personne
![Page 15: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/15.jpg)
Un moteur de recherche
http://HOST:PORT/index(s)/type(s)/_action|idMéthodes HTTP: GET, PUT, POST, DELETE
restful
![Page 16: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/16.jpg)
ExemplesIndexer un document
Put http://HOST:PORT/mediatheque/film/1POSt http://HOST:PORT/mediatheque/film/
Récupérer un documentget http://HOST:PORT/mediatheque/film/1
Supprimer un documentdelete http://HOST:PORT/mediatheque/film/1
Créer un indexpost http://HOST:PORT/mediatheque/musique
Rechercherget http://HOST:PORT/mediatheque/film/_search?q=djangoget http://HOST:PORT/_search?q=django
![Page 17: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/17.jpg)
Un langage de requêtes
match, field, query_string, bool, term,Fuzzy, match_all,more like this, geo,
Range, wildcard, span,...
Query dsl
![Page 18: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/18.jpg)
De nombreuses
terms, histogram, date histogram, range,Stats, geo distance, filter, query
...
Facettes
![Page 19: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/19.jpg)
facette « terms »curl -XGET 'localhost:9200/_search' -d '
{
"query": {
"match": { "titre": "django hard" }
},
"facets": {
"facet_genres": {
"terms": { "field": "genre" }
}
}
}'
![Page 20: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/20.jpg)
facette « terms »{...
"hits":{
...
},
"facets":{
"facet_genres":{
"_type":"terms",
"missing":0,
"total":2,
"other":0,
"terms":[
{"term":"western","count":1},
{"term":"action","count":1}
]
}
}
}
![Page 21: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/21.jpg)
facette « terms »{...
"hits":{
...
},
"facets":{
"facet_genres":{
"_type":"terms",
"missing":0,
"total":2,
"other":0,
"terms":[
{"term":"western","count":1},
{"term":"action","count":1}
]
}
}
}
![Page 22: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/22.jpg)
facette «histogramme»curl -XGET 'localhost:9200/media/film_search' -d '
{
"query": {
"match_all": {}
},
"facets": {
"facet_entrees": {
"histogram": {
"field": "nb_entrees",
"interval": "1000000"
}
}
}
}'
![Page 23: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/23.jpg)
facette «histogramme»{
"hits": { … },
"facets": {
"facet_entrees": {
"_type": "histogram",
"entries": [
{ "key": 1000000, "count": 1 },
{ "key": 2000000, "count": 1 },
{ "key": 3000000, "count": 1 }
]
}
}
}
![Page 24: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/24.jpg)
facette «histogramme»{
"hits": { … },
"facets": {
"facet_entrees": {
"_type": "histogram",
"entries": [
{ "key": 1000000, "count": 1 },
{ "key": 2000000, "count": 1 },
{ "key": 3000000, "count": 1 }
]
}
}
}
![Page 25: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/25.jpg)
Elasticsearch est
Plusieurs nœuds communiquent en uni/multicast Node master, data, http
...
distribué
![Page 26: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/26.jpg)
Ils ont aussi pensé à la
supervision
![Page 27: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/27.jpg)
Elasticsearch est
100 % Java
![Page 28: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/28.jpg)
Mais aussi tout plein d'autres
Php, perl, scala, python, shell, ruby,.Net, Grails, play !, flume, clojure,
Puppet, chef,...
clients
![Page 29: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/29.jpg)
Un gros paquet de
Plugin d'analyse, rivers, transport, Site, misc,
...
plugins
![Page 30: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/30.jpg)
Extraction de texte avec
Apache tika
![Page 31: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/31.jpg)
L'indexation facilitée avec les
Jdbc, Mongodb, couchdb, rabbitmq, activemq,Ldap, rss, twitter, wikipedia,
...
rivers
![Page 32: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/32.jpg)
Jdbc river plugincurl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "",
"password" : "",
"sql" : "select * from orders"
}
}'
![Page 33: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/33.jpg)
L'API
percolate
![Page 34: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/34.jpg)
API percolatecurl -XPUT localhost:9200/_percolator/media/film_box_office -d '{
"query": {
"constant_score": {
"filter": {
"range": {
"nb_entrees": {
"from": "5000000", "include_lower": true
}
}
}
}
}
}'
![Page 35: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/35.jpg)
API percolatecurl -XPOST 'localhost:9200/media/film/?percolate=*' -d '{
"titre":"Hollywoo",
"genre":"drame",
"nb_entrees": 6000000
}'
{
"ok":true,
"_index":"media",
"_type":"film",
"_id":"70fc7FMWS8Sdxo733_5sWg",
"_version":1,
"matches":["film_box_office"]
}
![Page 36: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/36.jpg)
Et aussi
Parent/childWarmers
SlowlogScriptBackup
...
![Page 37: Why elasticsearch rocks!](https://reader034.vdocuments.net/reader034/viewer/2022050919/547ba581b479599f098b4e37/html5/thumbnails/37.jpg)
Merci
?