devooxfr elastic search
DESCRIPTION
ElasticSearch slides for Devoxx France 2012TRANSCRIPT
![Page 1: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/1.jpg)
par David Pilato@dadoonet et @elasticsearchfr
Elasticsearch : moteur de recherche taillé pour le cloud
1
![Page 2: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/2.jpg)
$ curl http://localhost:9200/devoxx/speaker/dpilato
{ "nom" : "David Pilato", "jobs" : [ { "boite" : "SRA Europe (SSII)", "mission" : "bon à tout faire", "duree" : 3 }, { "boite" : "SFR", "mission" : "touche à tout", "duree" : 3 }, { "boite" : "e-Brands / Vivendi", "mission" : "chef de projets", "duree" : 4 }, { "boite" : "DGDDI (douane)", "mission" : "mouton à 5 pattes", "duree" : 7 } ], "passions" : [ "famille", "job", "deejay" ], "blog" : "http://dev.david.pilato.fr/", "twitter" : [ "@dadoonet", "@elasticsearchfr" ], "email" : "[email protected]"}
{ “speaker” : “David Pilato” }
2
![Page 3: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/3.jpg)
• Un moteur ? Pourquoi faire ?• Elasticsearch : une solution simple, complète, performante• Et si on indexait Twitter ?
Faites du bruit sur @DevoxxFR avec le hashtag #elasticsearch !
Abstract
3
![Page 4: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/4.jpg)
LE BESOINUn moteur ? Pour quoi faire ?
4
![Page 5: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/5.jpg)
Un document dans une base de données :• Un attribut date : 19/04/2012• Un attribut codifié pays : FR• Correspondant à la table d’association code/libellé
• Code : FR• Libellé : France
• Un attribut commentaire : "J’observe une erreur de saisie dans la désignation commerciale du produit. Songer à téléphoner à David."
Cas d'école « SQL old school »
5Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
doc
datepays
commentaire
pays
codelibelle
![Page 6: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/6.jpg)
Cas d'école « SQL old school »
• Cherche moi un document de décembre 2011 portant sur la france et contenant saisie et david
• En SQL :
6
SELECT doc.*, pays.* FROM doc, paysWHERE doc.pays_code = pays.code AND doc.date_doc > to_date('2011-12', 'yyyy-mm') AND doc.date_doc < to_date('2012-01', 'yyyy-mm') AND lower(pays.libelle) = 'france' AND lower(doc.commentaire) LIKE ‘%saisie%' AND lower(doc.commentaire) LIKE ‘%david%';
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 7: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/7.jpg)
Voir aussi : http://www.cestpasdur.com/2012/04/01/elasticsearch-vs-mysql-recherche
Performances du like ‘%’
7Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 8: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/8.jpg)
• Un moteur de recherche est composé de :• un moteur d’indexation de documents• un moteur de recherche sur les index
• De fait, un moteur de recherche est énormément plus rapide qu’une base de données pour faire des recherches :
c’est son métier !
C'est quoi un moteur ?
8Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 9: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/9.jpg)
Your Data, your Search !
ELASTICSEARCH
9
![Page 10: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/10.jpg)
Elasticsearch
• Moteur de recherche pour la génération NoSQL• Basé sur le standard Apache Lucene• Masque la complexité Java/Lucene à l’aide de services standards HTTP /
RESTful / JSON• Utilisable à partir de n’importe quelle technologie• Ajoute la couche cloud manquante à Lucene• C’est un moteur, pas une interface graphique !
10Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 11: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/11.jpg)
• Simple ! En quelques minutes (Zero Conf), on dispose d’un moteur complet prêt à recevoir nos documents à indexer et à faire des recherches.
• Efficace ! Il suffit de démarrer des nœuds Elasticsearch pour bénéficier immédiatement de la réplication, de l’équilibrage de charge.
• Puissant ! Basé sur Lucene, il en parallélise les traitements pour donner des temps de réponse acceptables (en général inférieurs à 100ms)
• Complet ! Beaucoup de fonctionnalités : analyse et facettes, percolation, rivières, plugins, …
Points clés
11Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 12: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/12.jpg)
• Document : Un objet représentant les données (au sens NoSQL).Penser "recherche", c'est oublier le SGBDR et penser "Documents"
{ "text": "Bienvenue à la conférence #elasticsearch pour #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", "truncated": false, "retweet_count": 0, "hashtag": [ { "text": "elasticsearch", "start": 27, "end": 40 }, { "text": "devoxxfr", "start": 47, "end": 55 } ], "user": { "id": 51172224, "name": "David Pilato", "screen_name": "dadoonet", "location": "France", "description": "Soft Architect, Project Manager, Senior Developper.\r\nAt this time, enjoying NoSQL world : CouchDB, ElasticSearch.\r\nDeeJay 4 times a year, just for fun !" }}
• Type : Regroupe des documents de même type• Index : Espace logique de stockage des documents dont les types sont
fonctionnellement communs
Un
twee
t
Ranger ses données
12Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 13: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/13.jpg)
• curl -XPUT http://localhost:9200/twitter/tweet/1• curl -XGET http://localhost:9200/twitter/tweet/1• curl -XDELETE http://localhost:9200/twitter/tweet/1
• curl -XGET http://localhost:9200/twitter/tweet/_search• curl -XGET http://localhost:9200/twitter/_search• curl -XGET http://localhost:9200/_search
• curl -XGET http://localhost:9200/twitter/_status
Méthodes HTTP : GET, POST, PUT, DELETE
Interagir avec Elasticsearch
13
API REST : http://host:port/[index]/[type]/[_action/id]
Documents
Recherche
Meta données Elasticsearch
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 14: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/14.jpg)
Indexons un document
{ "ok":true, "_index":"twitter", "_type":"tweet", "_id":"1"}
$ curl -XPUT localhost:9200/twitter/tweet/1 -d '{ "text": "Bienvenue à la conférence #elasticsearch pour #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", "truncated": false, "retweet_count": 0, "hashtag": [ { "text": "elasticsearch", "start": 27, "end": 40 }, { "text": "devoxxfr", "start": 47, "end": 55 } ], "user": { "id": 51172224, "name": "David Pilato", "screen_name": "dadoonet", "location": "France", "description": "Soft Architect, Project Manager, Senior Developper.\r\nAt this time, enjoying NoSQL world : CouchDB, ElasticSearch.\r\nDeeJay 4 times a year, just for fun !" }}'
14Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 15: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/15.jpg)
$ curl localhost:9200/twitter/tweet/_search?q=elasticsearch
{ "took" : 24, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.227, "hits" : [ { "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_score" : 0.227, "_source" : { "text": "Bienvenue à la conférence #elasticsearch pour #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", […] } } ] }}
Nb de documents
Coordonnées
Pertinence
Document source
Cherchons un document
15Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 16: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/16.jpg)
• Elasticsearch ne renvoie que les 10 premiers résultats (même sur plusieurs millions)
• Elasticsearch permet ensuite de se "balader" dans les résultats$ curl "localhost:9200/twitter/tweet/_search?q=elasticsearch&from=10&size=10"
$ curl "localhost:9200/twitter/tweet/_search?q=elasticsearch&explain=true"
• La pertinence est calculée suivant le nombre d'occurrences plus ou moins exactes de chaque terme dans un document
Les résultats de recherche
16Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 17: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/17.jpg)
Type DescriptionMatch All Recherche tout le contenu (pratique avec des filtres)
QueryString Recherche avec analyse, jokers (syntaxe Lucene possible* +, -, FROM, TO, ^)Term Recherche d'un terme sans analyse préalableText Recherche d'un texte avec analyse (par défaut OR sur chaque token)
Wildcard Recherche avec joker (*, ?)Bool Recherche multi-critères (MUST, MUST NOT, SHOULD)
Range Recherche intervalle (>, >=, <, <=)Prefix Utile pour faire de l'autocomplétion
Filtered Filtrage (couplage de filtres et de queries)Fuzzy like this Permet des recherches par vraisemblance de termesMore like this Permet de trouver des documents avec un minimum de termes
* http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/queryparsersyntax.html
Langage QueryDSL pour les recherches avancées
Quelques types de recherche
17Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 18: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/18.jpg)
Ou "La vie est un long fleuve tranquille !"
18
LA COLLECTE AUTOMATIQUE DE DONNÉES
![Page 19: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/19.jpg)
Stockage Données
Doc
La collecte
19Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 20: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/20.jpg)
Stockage Données
Doc
Doc
20
La collecte
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 21: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/21.jpg)
Stockage Données
Doc Doc
21
La collecte
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 22: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/22.jpg)
Stockage Données
Doc
Doc
Doc
22
La collecte
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 23: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/23.jpg)
Stockage Données
DocDoc
Doc
23
La collecte
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 24: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/24.jpg)
Stockage Données
DocDocDoc
24
La collecte
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 25: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/25.jpg)
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
• CouchDB River• MongoDB River• Wikipedia River• Twitter River• RabbitMQ River
• RSS River
• Dick Rivers
Rivers
25
![Page 26: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/26.jpg)
La puissance des facettes ! Faites parler vos données en les regardant sous différentes facettes !
ANALYSE DES RÉSULTATS (EN TEMPS QUASI RÉEL)
26
![Page 27: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/27.jpg)
ID Username Date Hashtags1 dadoonet 2012-04-18 1
2 devoxxfr 2012-04-18 5
3 elasticsearchfr 2012-04-18 2
4 dadoonet 2012-04-18 2
5 devoxxfr 2012-04-18 6
6 elasticsearchfr 2012-04-19 3
7 dadoonet 2012-04-19 3
8 devoxxfr 2012-04-19 7
9 elasticsearchfr 2012-04-20 4
Des
tw
eets
Les facettes
27Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 28: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/28.jpg)
ID Username Date Hashtags1 dadoonet 2012-04-18 1
2 devoxxfr 2012-04-18 5
3 elasticsearchfr 2012-04-18 2
4 dadoonet 2012-04-18 2
5 devoxxfr 2012-04-18 6
6 elasticsearchfr 2012-04-19 3
7 dadoonet 2012-04-19 3
8 devoxxfr 2012-04-19 7
9 elasticsearchfr 2012-04-20 4
Username Countdadoonet 3
devoxxfr 3
elasticsearchfr 3
Facette "Term"
28Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 29: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/29.jpg)
ID Username Date Hashtags1 dadoonet 2012-04-18 12 devoxxfr 2012-04-18 53 elasticsearchfr 2012-04-18 24 dadoonet 2012-04-18 25 devoxxfr 2012-04-18 66 elasticsearchfr 2012-04-19 37 dadoonet 2012-04-19 38 devoxxfr 2012-04-19 79 elasticsearchfr 2012-04-20 4
"facets" : { "users" : { "terms" : {"field" : "username"} } }
"facets" : { "users" : { "_type" : "terms", "missing" : 0, "total": 9, "other": 0, "terms" : [ { "term" : "dadoonet", "count" : 3 }, { "term" : "devoxxfr", "count" : 3 }, { "term" : "elasticsearchfr", "count" : 3 } ] }
29
Facette "Term"
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 30: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/30.jpg)
ID Username Date Hashtags1 dadoonet 2012-04-18 1
2 devoxxfr 2012-04-18 5
3 elasticsearchfr 2012-04-18 2
4 dadoonet 2012-04-18 2
5 devoxxfr 2012-04-18 6
6 elasticsearchfr 2012-04-19 3
7 dadoonet 2012-04-19 3
8 devoxxfr 2012-04-19 7
9 elasticsearchfr 2012-04-20 4
Date Count2012-04 9
Par mois
Date Count2012-04-18 52012-04-19 32012-04-20 1
Par jour
Facette "Date Histogram"
30Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 31: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/31.jpg)
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
ID Username Date Hashtags1 dadoonet 2012-04-18 1
2 devoxxfr 2012-04-18 5
3 elasticsearchfr 2012-04-18 2
4 dadoonet 2012-04-18 2
5 devoxxfr 2012-04-18 6
6 elasticsearchfr 2012-04-19 3
7 dadoonet 2012-04-19 3
8 devoxxfr 2012-04-19 7
9 elasticsearchfr 2012-04-20 4
"facets" : { "perday" : { "date_histogram" : { "field" : "date", "interval" : "day" } } }
"facets" : { "perday" : { "_type" : "date_histogram", "entries": [ { "time": 1334700000000, "count": 5 }, { "time": 1334786400000, "count": 3 }, { "time": 1334872800000, "count": 1 } ] }}
31
Facette "Date Histogram"
![Page 32: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/32.jpg)
ID Username Date Hashtags1 dadoonet 2012-04-18 12 devoxxfr 2012-04-18 53 elasticsear
chfr2012-04-18 2
4 dadoonet 2012-04-18 25 devoxxfr 2012-04-18 66 elasticsear
chfr2012-04-19 3
7 dadoonet 2012-04-19 38 devoxxfr 2012-04-19 79 elasticsear
chfr2012-04-20 4
Ranges Count Min Max Moy Totalx < 3 3 1 2 1.667 5
3 <= x < 5 3 3 4 3.333 10
x >= 5 3 5 7 6 18
Facette "Ranges"
32Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 33: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/33.jpg)
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
ID Username Date Hashtags1 dadoonet 2012-04-18 12 devoxxfr 2012-04-18 53 elasticsear
chfr2012-04-18 2
4 dadoonet 2012-04-18 25 devoxxfr 2012-04-18 66 elasticsear
chfr2012-04-19 3
7 dadoonet 2012-04-19 38 devoxxfr 2012-04-19 79 elasticsear
chfr2012-04-20 4
"facets" : { "hashtags" : { "range" : { "field" : "hashtags", "ranges" : [ { "to" : 3 }, { "from" : 3, "to" : 5 }, { "from" : 5 } ] } } }
"facets" : { "hashtags" : { "_type" : "range", "ranges" : [ { "to": 3, "count": 3, "min": 1, "max": 2, "total": 5, "mean": 1.667 }, { "from":3, "to" : 5, "count": 3, "min": 3, "max": 4, "total": 10, "mean": 3.333 }, { "from":5, "count": 3, "min": 5, "max": 7, "total": 18, "mean": 6 } ] } }
33
Facette "Ranges"
![Page 34: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/34.jpg)
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
Ranges
Term
Term
Ranges
Usage "site marchand"
34
![Page 35: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/35.jpg)
Term
Date histogramRésultats
Critère fixe
La navigation par facettes
35
Ranges
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 36: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/36.jpg)
Critères
La navigation par facettes
36Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 37: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/37.jpg)
• Faire un matchAll sur l'ensemble des données• Actualiser toutes les x secondes• Indexer en même temps les nouvelles données
Term
Date histogram
Analyse temps-réel des données
37Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 38: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/38.jpg)
Avons-nous fait du bruit ?
DÉMONSTRATION
38
![Page 39: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/39.jpg)
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
TwitterRiver
TwitterStreaming
API
Chrome
Démonstration : architecture
39
$ curl -XPUT localhost:9200/_river/twitter/_meta -d '{ "type" : "twitter", "twitter" : { "user" : "twitter_user", "password" : "twitter_passowrd", "filter" : { "tracks" : ["devoxxfr"] } }}'
![Page 40: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/40.jpg)
Un peu plus de technique : partitions / réplications / scalabilité
ARCHITECTURE
40
![Page 41: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/41.jpg)
• Nœud (node) : Une instance d'Elasticsearch (~ machine ?)• Cluster : Un ensemble de nœuds• Partition (shard) : permet de découper un index en plusieurs parties pour y
distribuer les documents• Réplication (replica) : recopie d’une partition en une ou plusieurs copies dans
l'ensemble du cluster• Partition primaire (primary shard) : partition élue "principale" dans
l'ensemble du cluster. C'est là que se fait l'indexation par Lucene. Il n'y en a qu'une seule par shard dans l'ensemble du cluster.
• Partition secondaire (secondary shard) : partitions secondaires stockant les replicas des partitions primaires.
Lexique
41Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 42: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/42.jpg)
Cluster
Nœud 1
Cluster
Nœud 1
Shard 0
Shard 1
Cluster
Nœud 2
Shard 0
Shard 1
Nœud 1
Shard 0
Shard 1
réplication non respectéeréplication respectée
$ curl -XPUT localhost:9200/twitter -d '{ "index" : {
"number_of_shards" : 2,
"number_of_replicas" : 1
}
}'
Créons un index
42
Client CURL
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 43: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/43.jpg)
Cluster
Nœud 3Nœud 1
Shard 1
Nœud 2
Shard 0
Shard 1
Shard 0 Shard 0
Réallocation dynamique
43Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 44: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/44.jpg)
Cluster
Nœud 3Nœud 1
Shard 1
Nœud 2
Shard 0
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
44
Réallocation dynamique
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 45: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/45.jpg)
Cluster
Nœud 3Nœud 1
Shard 1
Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Le tuning, c'est trouver le bon équilibre entre le nombre de nodes, shards et replicas !
45
Réallocation dynamique
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 46: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/46.jpg)
Indexons un document
46
$ curl -XPUT localhost:9200/twitter/tweet/1 -d '{ "text": "Bienvenue à la conférence #elasticsearch pour #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ...}'
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 47: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/47.jpg)
Indexons un document
47
$ curl -XPUT localhost:9200/twitter/tweet/1 -d '{ "text": "Bienvenue à la conférence #elasticsearch pour #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ...}'
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 48: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/48.jpg)
Indexons un document
48
$ curl -XPUT localhost:9200/twitter/tweet/1 -d '{ "text": "Bienvenue à la conférence #elasticsearch pour #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ...}'
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 49: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/49.jpg)
Indexons un 2ème document
49
$ curl -XPUT localhost:9200/twitter/tweet/2 -d '{ "text": "Je fais du bruit pour #elasticsearch à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ...}'
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Doc 2
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 50: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/50.jpg)
Indexons un 2ème document
50
$ curl -XPUT localhost:9200/twitter/tweet/2 -d '{ "text": "Je fais du bruit pour #elasticsearch à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ...}'
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Doc 2
![Page 51: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/51.jpg)
Indexons un 2ème document
51
$ curl -XPUT localhost:9200/twitter/tweet/2 -d '{ "text": "Je fais du bruit pour #elasticsearch à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ...}'
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Doc 2
Doc 2
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 52: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/52.jpg)
Indexons un 2ème document
52
$ curl -XPUT localhost:9200/twitter/tweet/2 -d '{ "text": "Je fais du bruit pour #elasticsearch à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ...}'
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Doc 2
Doc 2
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 53: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/53.jpg)
Cherchons
53
$ curl localhost:9200/twitter/_search?q=elasticsearch
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Doc 2
Doc 2
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 54: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/54.jpg)
Cherchons
54
$ curl localhost:9200/twitter/_search?q=elasticsearch
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Doc 2
Doc 2
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 55: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/55.jpg)
Cherchons
55
$ curl localhost:9200/twitter/_search?q=elasticsearch
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Doc 2
Doc 2
{ "took" : 24, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 2, "max_score" : 0.227, "hits" : [ { "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_score" : 0.227, "_source" : { ... } }, { "_index" : "twitter", "_type" : "tweet", "_id" : "2", "_score" : 0.152, "_source" : { ... } } ] }}
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 56: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/56.jpg)
Cherchons encore
56
$ curl localhost:9200/twitter/_search?q=elasticsearch
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 1
Doc 2
Doc 2
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 57: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/57.jpg)
Cherchons encore
57
$ curl localhost:9200/twitter/_search?q=elasticsearch
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Nœud 4
Shard 1
Client CURL
Doc 1
Doc 2
Doc 2
Doc 1
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 58: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/58.jpg)
Cherchons encore
58
$ curl localhost:9200/twitter/_search?q=elasticsearch
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Client CURL
Doc 1
Doc 1
Doc 2
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
Shard 1
![Page 59: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/59.jpg)
Cherchons encore
59
$ curl localhost:9200/twitter/_search?q=elasticsearch
Cluster
Nœud 3Nœud 1 Nœud 2
Shard 1
Shard 0 Shard 0
Client CURL
Doc 1
Doc 1
Shard 1
Doc 2
{ "took" : 24, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 2, "max_score" : 0.227, "hits" : [ { "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_score" : 0.227, "_source" : { ... } }, { "_index" : "twitter", "_type" : "tweet", "_id" : "2", "_score" : 0.152, "_source" : { ... } } ] }}
Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 60: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/60.jpg)
~50 contributeurs directs au projet (+ de 2000 watchers et + de 280 forks)
Elasticsearch : la communauté
60Moteur Elasticsearch Rivers Facets Demo Architecture Communauté
![Page 61: DEvooxFR Elastic Search](https://reader031.vdocuments.pub/reader031/viewer/2022020122/5534abc0550346ff528b4b70/html5/thumbnails/61.jpg)
Posez aussi vos questions sur [email protected]
Rejoignez le mouvement !@ElasticsearchFR
Sources du talk sur : https://github.com/dadoonet/talks
QUESTIONS ?
61