Paris data geek - Elasticsearch

1,738 views

Published on

30 mn talk for Paris Data Geek le 08/02/2013

Published in: Technology
  • Be the first to comment

Paris data geek - Elasticsearch

  1. 1. Paris Data Geek Fév 2013 Elasticsearch. Le moteur de recherche élastique pour tous David Pilato, Elasticsearch.com, Parislundi 11 février 13
  2. 2. Qui ? $ curl http://localhost:9200/talk/speaker/dpilato { "nom" : "David Pilato", "jobs" : [ { "boite" : "SRA Europe (SSII)", "mission" : "bon à tout faire", "date" : "1995" }, { "boite" : "SFR", "mission" : "touche à tout", "date" : "1997" }, { "boite" : "e-Brands / Vivendi", "mission" : "chef de projets", "date": "2000" }, { "boite" : "DGDDI (douane)", "mission" : "mouton à 5 pattes", "date" : "2005" }, { "boite" : "IDEO Technologies", "mission" : "directeur technique", "date" : "2012" }, { "boite" : "Elasticsearch.com", "mission" : "technical advocate", "date" : "2013" } ], "passions" : [ "famille", "job", "deejay" ], "blog" : "http://dev.david.pilato.fr/", "twitter" : [ "@dadoonet", "@elasticsearchfr", "@scrutmydocs" ], "email" : "david@pilato.fr" }lundi 11 février 13
  3. 3. Qui ? $ curl http://localhost:9200/talk/speaker/dpilato { "nom" : "David Pilato", "jobs" : [ { "boite" : "SRA Europe (SSII)", "mission" : "bon à tout faire", "date" : "1995" }, { "boite" : "SFR", "mission" : "touche à tout", "date" : "1997" }, { "boite" : "e-Brands / Vivendi", "mission" : "chef de projets", "date": "2000" }, { "boite" : "DGDDI (douane)", "mission" : "mouton à 5 pattes", "date" : "2005" }, { "boite" : "IDEO Technologies", "mission" : "directeur technique", "date" : "2012" }, { "boite" : "Elasticsearch.com", "mission" : "technical advocate", "date" : "2013" } ], "passions" : [ "famille", "job", "deejay" ], "blog" : "http://dev.david.pilato.fr/", "twitter" : [ "@dadoonet", "@elasticsearchfr", "@scrutmydocs" ], "email" : "david@pilato.fr" }lundi 11 février 13
  4. 4. ScrutMyDocs.orglundi 11 février 13
  5. 5. SQL Classique Cherche moi un document de décembre 2011 portant sur la france et contenant produit et david En SQL :lundi 11 février 13
  6. 6. SQL Classique Cherche moi un document de décembre 2011 portant sur la france et contenant produit et david En SQL : SELECT doc.*, pays.* FROM doc, pays WHERE 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 ‘%produit% AND lower(doc.commentaire) LIKE ‘%david%;lundi 11 février 13
  7. 7. Au final, on obtientlundi 11 février 13
  8. 8. Un moteur de recherche • 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 !lundi 11 février 13
  9. 9. L’indexation, c’est quoi en fait ?lundi 11 février 13
  10. 10. Elasticsearchlundi 11 février 13
  11. 11. Elasticsearch Your Data, your Search !lundi 11 février 13
  12. 12. 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 !lundi 11 février 13
  13. 13. Indexer $ curl -XPUT localhost:9200/twitter/tweet/1 -d { "text": "Bienvenue à la conférence #elasticsearch pour #JUG", "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": "JUG", "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.rnDeeJay 4 times a year, just for fun !" } }lundi 11 février 13
  14. 14. Indexer $ curl -XPUT localhost:9200/twitter/tweet/1 -d { "text": "Bienvenue à la conférence #elasticsearch pour #JUG", "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": "JUG", "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.rnDeeJay 4 times a year, just for fun !" } } { "ok":true, "_index":"twitter", "_type":"tweet", "_id":"1" }lundi 11 février 13
  15. 15. Chercher $ curl localhost:9200/twitter/tweet/_search?q=elasticsearchlundi 11 février 13
  16. 16. Chercher $ 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 #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", […] } } ] } }lundi 11 février 13
  17. 17. Chercher $ curl localhost:9200/twitter/tweet/_search?q=elasticsearch { "took" : 24, Nb de "timed_out" : false, documents "_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 #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", […] } } ] } }lundi 11 février 13
  18. 18. Chercher $ 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" : [ { Coordonnées "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_score" : 0.227, "_source" : { "text": "Bienvenue à la conférence #elasticsearch pour #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", […] } } ] } }lundi 11 février 13
  19. 19. Chercher $ 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 #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", […] } Pertinence } ] } }lundi 11 février 13
  20. 20. Chercher $ curl localhost:9200/twitter/tweet/_search?q=elasticsearch { "took" : 24, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1, Document "max_score" : 0.227, "hits" : [ { source "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_score" : 0.227, "_source" : { "text": "Bienvenue à la conférence #elasticsearch pour #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", […] } } ] } }lundi 11 février 13
  21. 21. Query DSL • Requêtes précises : plutôt que de chercher « à la google », on peut utiliser des critères précis :lundi 11 février 13
  22. 22. Query DSL • Requêtes précises : plutôt que de chercher « à la google », on peut utiliser des critères précis : $ curl -XPOST localhost:9200/twitter/tweet/_search -d ’{ "bool" : { "must" : { "term" : { "user" : "kimchy" } }, "must_not" : { "range" : { "age" : { "from" : 10, "to" : 20 } } }, "should" : [ { "term" : { "tag" : "wow" } },{ "match" : { "tag" : "elasticsearch is cool" } } ] } }’lundi 11 février 13
  23. 23. Analyser La puissance des facettes ! Faites parler vos données en les regardant sous différentes facettes ! (Et en temps quasi réel, s’il vous plait !)lundi 11 février 13
  24. 24. Des tweets ID Username Date Hashtag 1 dadoonet 2012-04-18 1 2 talk 2012-04-18 5 3 elasticsearch 2012-04-18 2 4 dadoonet 2012-04-18 2 5 talk 2012-04-18 6 6 elasticsearch 2012-04-19 3 7 dadoonet 2012-04-19 3 8 talk 2012-04-19 7 9 elasticsearch 2012-04-20 4lundi 11 février 13
  25. 25. Term FacetD Username Date Hashtag1 dadoonet 2012-04-18 12 talktalk 2012-04-18 53 elasticsearch 2012-04-18 24 dadoonet 2012-04-18 25 talk 2012-04-18 66 elasticsearch 2012-04-19 37 dadoonet 2012-04-19 38 talk 2012-04-19 79 elasticsearch 2012-04-20 4 lundi 11 février 13
  26. 26. Term FacetD Username Date Hashtag1 dadoonet 2012-04-18 12 talktalk 2012-04-18 53 elasticsearch 2012-04-18Username 2 Count4 dadoonet 2012-04-18dadoonet 2 35 talk 2012-04-18 talk 6 36 elasticsearch 2012-04-19 elasticsearch 3 37 dadoonet 2012-04-19 38 talk 2012-04-19 79 elasticsearch 2012-04-20 4 lundi 11 février 13
  27. 27. Term FacetD Username Date Hashtag1 dadoonet 2012-04-18 12 talk 2012-04-18 53 elasticsearch 2012-04-18 24 dadoonet 2012-04-18 25 talk 2012-04-18 66 elasticsearch 2012-04-19 37 dadoonet 2012-04-19 38 talk 2012-04-19 79 elasticsearch 2012-04-20 4 lundi 11 février 13
  28. 28. Term FacetD Username Date Hashtag1 dadoonet 2012-04-18 "facets" : { 1 "users" : { "terms" : {"field" : "username"} } }2 talk 2012-04-18 53 elasticsearch 2012-04-18 24 dadoonet 2012-04-18 25 talk 2012-04-18 66 elasticsearch 2012-04-19 37 dadoonet 2012-04-19 38 talk 2012-04-19 79 elasticsearch 2012-04-20 4 lundi 11 février 13
  29. 29. Term FacetD Username Date Hashtag1 dadoonet 2012-04-18 "facets" : { 1 "users" : { "terms" : {"field" : "username"} } }2 talk 2012-04-18 5 "facets" : {3 elasticsearch 2012-04-18 "users" : { 2 "_type" : "terms",4 dadoonet 2012-04-18"missing" : 0,2 "total": 9,5 talk 2012-04-18"other": 0, 6 "terms" : [6 elasticsearch 2012-04-19 { "term" : "dadoonet", "count" },3 }, 3 { "term" : "talk", "count" : 3 : { "term" : "elasticsearch", "count" : 3 }7 dadoonet 2012-04-19] 3 }8 talk 2012-04-19 } 79 elasticsearch 2012-04-20 4 lundi 11 février 13
  30. 30. Date Histogram Facet Date Hashtag 2012-04-18 1 2012-04-18 5h 2012-04-18 2 2012-04-18 2 2012-04-18 6h 2012-04-19 3 2012-04-19 3 2012-04-19 7h 2012-04-20 4lundi 11 février 13
  31. 31. Date Histogram Facet Date Hashtag 2012-04-18 1 Par mois 2012-04-18 5 Date Counth 2012-04-18 2 2012-04 9 2012-04-18 2 2012-04-18 6h 2012-04-19 3 2012-04-19 3 2012-04-19 7h 2012-04-20 4lundi 11 février 13
  32. 32. Date Histogram Facet Date Hashtag 2012-04-18 1 Par mois 2012-04-18 5 Date Counth 2012-04-18 2 2012-04 9 2012-04-18 2 2012-04-18 6 Par jourh 2012-04-19 3 Date Count 2012-04-19 3 2012-04-18 5 2012-04-19 7 2012-04-19 3h 2012-04-20 4 2012-04-20 1lundi 11 février 13
  33. 33. Date Histogram Facet Date Hashtag 2012-04-18 1 2012-04-18 5h 2012-04-18 2 2012-04-18 2 2012-04-18 6h 2012-04-19 3 2012-04-19 3 2012-04-19 7h 2012-04-20 4lundi 11 février 13
  34. 34. Date Histogram Facet Date Hashtag "facets" : { 2012-04-18 1 "perday" : { "date_histogram" : { 2012-04-18 5 "field" : "date", "interval" : "day" }h 2012-04-18 2 } } 2012-04-18 2 2012-04-18 6h 2012-04-19 3 2012-04-19 3 2012-04-19 7h 2012-04-20 4lundi 11 février 13
  35. 35. Date Histogram Facet Date Hashtag "facets" : { 2012-04-18 1 "perday" : { "date_histogram" : { 2012-04-18 5 "field" : "date", "interval" : "day" }h 2012-04-18 2 } } 2012-04-18 2 "facets" : { 2012-04-18 6 "perday" : { "_type" : "date_histogram",h 2012-04-19 3 "entries": [ { "time": 1334700000000, "count": 5 }, 2012-04-19 3 { "time": 1334786400000, "count": 3 }, { "time": 1334872800000, "count": 1 } 2012-04-19 7 } ] }h 2012-04-20 4lundi 11 février 13
  36. 36. Range Facet Hashtag 1 5 2 2 6 3 3 7 4lundi 11 février 13
  37. 37. Range Facet Hashtag 1 5 2 Hashtag Count Min Max Moy Total 2 x<3 3 1 2 1.667 5 6 3 <= x < 5 3 3 4 3.333 10 3 x >= 5 3 5 7 6 18 3 7 4lundi 11 février 13
  38. 38. Range Facet Hashtag 1 5 2 2 6 3 3 7 4lundi 11 février 13
  39. 39. Range Facet "facets" : { "hashtags" : { "range" : { "field" : "hashtag", "ranges" : [ { "to" : 3 }, Hashtag { "from" : 3, "to" : 5 }, { "from" : 5 } ] } } } 1 5 2 2 6 3 3 7 4lundi 11 février 13
  40. 40. Range Facet "facets" : { "hashtags" : { "range" : { "field" : "hashtag", "ranges" : [ { "to" : 3 }, Hashtag { "from" : 3, "to" : 5 }, { "from" : 5 } ] } } } 1 "facets" : { 5 "hashtags" : { "_type" : "range", 2 "ranges" : [ { "to": 3, 2 "count": 3, "min": 1, "max": 2, 6 "total": 5, "mean": 1.667 }, { "from":3, "to" : 5, 3 "count": 3, "min": 3, "max": 4, 3 "total": 10, "mean": 3.333 },{ 7 "from":5, "count": 3, 4 "min": 5, "max": 7, "total": 18, "mean": 6 } ] } }lundi 11 février 13
  41. 41. Site marchandlundi 11 février 13
  42. 42. Site marchandlundi 11 février 13
  43. 43. Site marchandlundi 11 février 13
  44. 44. Site marchandlundi 11 février 13
  45. 45. Site marchand Ranges Term Term Rangeslundi 11 février 13
  46. 46. Analyse temps-réel • Faire un matchAll sur lensemble des données • Actualiser toutes les x secondes • Indexer en même temps les nouvelles données Date histogram Termlundi 11 février 13
  47. 47. Facettes Cartographiqueslundi 11 février 13
  48. 48. Reprenons notre formulairelundi 11 février 13
  49. 49. Reprenons notre formulaire Recherche Full Textlundi 11 février 13
  50. 50. Reprenons notre formulairelundi 11 février 13
  51. 51. Reprenons notre formulairelundi 11 février 13
  52. 52. Démonstration http://onemilliontweetmap.com/ http://www.francetvinfo.fr/en-direct/ http://localhost:9200/_plugin/demo/lundi 11 février 13
  53. 53. Architecture Un peu plus de technique : partitions / réplications / scalabilitélundi 11 février 13
  54. 54. Lexiquelundi 11 février 13
  55. 55. Lexique • Nœud (node) : Une instance dElasticsearch (~ machine ?)lundi 11 février 13
  56. 56. Lexique • Nœud (node) : Une instance dElasticsearch (~ machine ?) • Cluster : Un ensemble de nœudslundi 11 février 13
  57. 57. Lexique • Nœud (node) : Une instance dElasticsearch (~ machine ?) • Cluster : Un ensemble de nœuds • Partition (shard) : permet de découper un index en plusieurs parties pour y distribuer les documentslundi 11 février 13
  58. 58. Lexique • Nœud (node) : Une instance dElasticsearch (~ 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 lensemble du clusterlundi 11 février 13
  59. 59. Créons un index Cluster Nœud 1 Client CURLlundi 11 février 13
  60. 60. Créons un index $ curl -XPUT localhost:9200/twitter -d { Cluster "index" : { Nœud 1 "number_of_shards" : 2, "number_of_replicas" : 1 Shard 0 } Shard 1 } réplication non respectée Client CURLlundi 11 février 13
  61. 61. Créons un index $ curl -XPUT localhost:9200/twitter -d { Cluster "index" : { Nœud 1 Nœud 2 "number_of_shards" : 2, "number_of_replicas" : 1 Shard 0 Shard 0 } } Shard 1 Shard 1 réplication respectée Client CURLlundi 11 février 13
  62. 62. Réallocation dynamique Cluster Nœud 1 Nœud 2 Shard 0 Shard 0 Shard 1 Shard 1lundi 11 février 13
  63. 63. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Shard 0 Shard 0 Shard 1 Shard 1lundi 11 février 13
  64. 64. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Shard 0 Shard 0 Shard 0 Shard 1 Shard 1lundi 11 février 13
  65. 65. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Shard 0 Shard 0 Shard 1 Shard 1lundi 11 février 13
  66. 66. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Shard 0 Shard 0 Shard 1 Shard 1lundi 11 février 13
  67. 67. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Shard 0 Shard 0 Shard 1 Shard 1lundi 11 février 13
  68. 68. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Shard 0 Shard 0 Shard 1 Shard 1 Shard 1lundi 11 février 13
  69. 69. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Shard 0 Shard 0 Shard 1 Shard 1 Le tuning, cest trouver le bon équilibre entre le nombre de nodes, shards et replicas !lundi 11 février 13
  70. 70. Indexons un document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Shard 0 Shard 0 Shard 1 Shard 1 Doc 1 Client $ curl -XPUT localhost:9200/twitter/tweet/1 -d CURL { "text": "Bienvenue à la conférence #elasticsearch pour #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  71. 71. Indexons un document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Shard 0 1 Shard 0 Shard 1 Shard 1 Client $ curl -XPUT localhost:9200/twitter/tweet/1 -d CURL { "text": "Bienvenue à la conférence #elasticsearch pour #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  72. 72. Indexons un document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Shard 0 1 Shard 0 Shard 1 Shard 1 Client $ curl -XPUT localhost:9200/twitter/tweet/1 -d CURL { "text": "Bienvenue à la conférence #elasticsearch pour #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  73. 73. Indexons un document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Shard 1 Shard 1 Client $ curl -XPUT localhost:9200/twitter/tweet/1 -d CURL { "text": "Bienvenue à la conférence #elasticsearch pour #JUG", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  74. 74. Indexons un 2ème document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Shard 1 Shard 1 Doc 2 Client $ curl -XPUT localhost:9200/twitter/tweet/2 -d CURL { "text": "Je fais du bruit pour #elasticsearch à #JUG", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  75. 75. Indexons un 2ème document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Shard 1 Shard 1 Doc 2 Client $ curl -XPUT localhost:9200/twitter/tweet/2 -d CURL { "text": "Je fais du bruit pour #elasticsearch à #JUG", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  76. 76. Indexons un 2ème document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Shard 1 Doc Shard 1 2 Client $ curl -XPUT localhost:9200/twitter/tweet/2 -d CURL { "text": "Je fais du bruit pour #elasticsearch à #JUG", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  77. 77. Indexons un 2ème document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Shard 1 Doc Shard 1 2 Client $ curl -XPUT localhost:9200/twitter/tweet/2 -d CURL { "text": "Je fais du bruit pour #elasticsearch à #JUG", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  78. 78. Indexons un 2ème document Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Doc Doc Shard 1 Shard 1 2 2 Client $ curl -XPUT localhost:9200/twitter/tweet/2 -d CURL { "text": "Je fais du bruit pour #elasticsearch à #JUG", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }lundi 11 février 13
  79. 79. Cherchons ! Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Doc Doc Shard 1 Shard 1 2 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  80. 80. Cherchons ! Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Doc Doc Shard 1 Shard 1 2 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  81. 81. Cherchons ! Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Shard 0 Shard 0 1 Doc Shard 1 Shard 1 Doc 2 Doc 1 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  82. 82. Cherchons ! Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Shard 0 Shard 0 1 Doc Shard 1 Shard 1 2 Doc Doc 2 1 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  83. 83. Cherchons ! { Cluster "took" : 24, Nœud 1 "timed_out" : false,Nœud 3 Nœud 2 Nœud 4 "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, Doc Shard 0 "hits" : { Shard 0 1 "total" : 2, "max_score" : 0.227, Doc Shard 1 "hits" : [ { Shard 1 2 "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_score" : 0.227, "_source" : { ... } Doc }, { Doc 2 "_index" : "twitter", 1 Client "_type" : "tweet", $ curl localhost:9200/twitter/_search?q=elasticsearch CURL "_id" : "2", "_score" : 0.152, "_source" : { ... } } ] }lundi 11 février 13
  84. 84. Cherchons encore ! Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Doc Doc Shard 1 Shard 1 2 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  85. 85. Cherchons encore ! Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Doc Shard 0 1 Shard 0 1 Doc Doc Shard 1 Shard 1 2 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  86. 86. Cherchons encore ! Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Doc Shard 0 1 Shard 0 Doc 1 Shard 1 Doc Doc Shard 1 2 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  87. 87. Cherchons encore ! Cluster Nœud 1 Nœud 2 Nœud 3 Doc Shard 0 1 Shard 0 Doc 1 Shard 1 Doc 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  88. 88. Cherchons encore ! Cluster Nœud 1 Nœud 2 Nœud 3 Doc Shard 0 1 Shard 0 Doc 1 Shard 1 Doc 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  89. 89. Cherchons encore ! Cluster Nœud 1 Nœud 2 Nœud 3 Doc Shard 0 1 Shard 0 Shard 1 Doc Doc 1 2 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  90. 90. Cherchons encore ! Cluster Nœud 1 Nœud 2 Nœud 3 Doc Shard 0 1 Shard 0 Shard 1 Doc Doc 2 1 Client $ curl localhost:9200/twitter/_search?q=elasticsearch CURLlundi 11 février 13
  91. 91. Cherchons encore ! { Cluster "took" : 24, Nœud 1 "timed_out" : false,Nœud 3 Nœud 2 "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, Doc Shard 0 1 "hits" : { Shard 0 "total" : 2, "max_score" : 0.227, Shard 1 "hits" : [ { "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_score" : 0.227, "_source" : { ... } Doc }, { 2 Doc "_index" : "twitter", 1 Client "_type" : "tweet", $ curl localhost:9200/twitter/_search?q=elasticsearch CURL "_id" : "2", "_score" : 0.152, "_source" : { ... } } ] }lundi 11 février 13
  92. 92. La communauté ~100 contributeurs directs au projet (+ de 3200 watchers et + de 620 forks)lundi 11 février 13
  93. 93. La communauté ~100 contributeurs directs au projet (+ de 3200 watchers et + de 620 forks)lundi 11 février 13
  94. 94. La communauté ~170 inscrits sur la mailing list, 70 messages / mois, ~270 followerslundi 11 février 13
  95. 95. lundi 11 février 13
  96. 96. Rejoignez le mouvement ! @ElasticsearchFR www.elasticsearch.fr ss re og pr in Questions ? Posez aussi vos questions sur elasticsearch-fr@googlegroups.com Prochaines rencontres sur http://www.meetup.com/elasticsearchfr/ Slides sur http://fr.slideshare.net/dadoonet Sources sur https://github.com/elasticsearchfr/talkslundi 11 février 13

×