SlideShare a Scribd company logo
1 of 156
Elasticsearch : moteur de recherche
taillé pour le cloud
              par David Pilato
         @dadoonet et @elasticsearchfr




                                         1
{ “speaker” : “David Pilato” }
$ 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" : "david@pilato.fr"
}




                                                                                       2
Abstract
• 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 !



                                                               3
Un moteur ? Pour quoi faire ?
LE BESOIN




                                4
Cas d'école « SQL old school »
          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."


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                               5
Cas d'école « SQL old school »
          Un document dans une base de données :                         doc        pays
         • Un attribut date : 19/04/2012                                 date        code
         • Un attribut codifié pays : FR                                 pays       libelle
         • Correspondant à la table d’association code/libellé        commentaire

          • 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."


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                              5
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 :




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        6
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 :
                  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 ‘%saisie%' AND
                    lower(doc.commentaire) LIKE ‘%david%';




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        6
Performances du like ‘%’




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        7
Performances du like ‘%’




                               Voir aussi : http://www.cestpasdur.com/2012/04/01/elasticsearch-vs-mysql-recherche




Moteur Elasticsearch Rivers   Facets     Demo       Architecture Communauté
                                                                                                                    7
C'est quoi un moteur ?




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        8
C'est quoi un moteur ?
         • Un moteur de recherche est composé de :
          • un moteur d’indexation de documents
          • un moteur de recherche sur les index




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        8
C'est quoi un moteur ?
         • 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 :




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                               8
C'est quoi un moteur ?
         • 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 !


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                               8
ELASTICSEARCH




                9
Your Data, your Search !
ELASTICSEARCH




                           9
Elasticsearch




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                         10
Elasticsearch
         • Moteur de recherche pour la génération NoSQL




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                         10
Elasticsearch
         • Moteur de recherche pour la génération NoSQL
         • Basé sur le standard Apache Lucene




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                         10
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




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    10
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




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    10
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




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    10
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 !




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    10
Points clés




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        11
Points clés
         • Simple ! En quelques minutes (Zero Conf), on dispose d’un moteur
             complet prêt à recevoir nos documents à indexer et à faire des recherches.




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                          11
Points clés
         • 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.




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                        11
Points clés
         • 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)




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                        11
Points clés
         • 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, …


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                        11
Ranger ses données




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        12
Ranger ses données
         • Document : Un objet représentant les données (au sens NoSQL).
             Penser "recherche", c'est oublier le SGBDR et penser "Documents"




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                12
Ranger ses données
                • 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,
 Un tweet




              "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.rnAt this time, enjoying NoSQL
            world : CouchDB, ElasticSearch.rnDeeJay 4 times a year, just for fun !" }
            }




Moteur Elasticsearch Rivers     Facets   Demo   Architecture Communauté
                                                                                                                              12
Ranger ses données
                • 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,
 Un tweet




              "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.rnAt this time, enjoying NoSQL
            world : CouchDB, ElasticSearch.rnDeeJay 4 times a year, just for fun !" }
            }


                • Type : Regroupe des documents de même type


Moteur Elasticsearch Rivers     Facets   Demo   Architecture Communauté
                                                                                                                              12
Ranger ses données
                • 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,
 Un tweet




              "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.rnAt this time, enjoying NoSQL
            world : CouchDB, ElasticSearch.rnDeeJay 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
Moteur Elasticsearch Rivers     Facets   Demo   Architecture Communauté
                                                                                                                              12
Interagir avec Elasticsearch
            API REST : http://host:port/[index]/[type]/[_action/id]
            Méthodes HTTP : GET, POST, PUT, DELETE




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        13
Interagir avec Elasticsearch
            API REST : http://host:port/[index]/[type]/[_action/id]
            Méthodes HTTP : GET, POST, PUT, DELETE
            Documents
                • curl -XPUT http://localhost:9200/twitter/tweet/1




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        13
Interagir avec Elasticsearch
            API REST : http://host:port/[index]/[type]/[_action/id]
            Méthodes HTTP : GET, POST, PUT, DELETE
            Documents
                • curl -XPUT http://localhost:9200/twitter/tweet/1
                • curl -XGET http://localhost:9200/twitter/tweet/1




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        13
Interagir avec Elasticsearch
            API REST : http://host:port/[index]/[type]/[_action/id]
            Méthodes HTTP : GET, POST, PUT, DELETE
            Documents
                • curl -XPUT http://localhost:9200/twitter/tweet/1
                • curl -XGET http://localhost:9200/twitter/tweet/1
                • curl -XDELETE http://localhost:9200/twitter/tweet/1




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        13
Interagir avec Elasticsearch
            API REST : http://host:port/[index]/[type]/[_action/id]
            Méthodes HTTP : GET, POST, PUT, DELETE
            Documents
                • curl -XPUT http://localhost:9200/twitter/tweet/1
                • curl -XGET http://localhost:9200/twitter/tweet/1
                • curl -XDELETE http://localhost:9200/twitter/tweet/1
            Recherche
                • curl -XGET http://localhost:9200/twitter/tweet/_search




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           13
Interagir avec Elasticsearch
            API REST : http://host:port/[index]/[type]/[_action/id]
            Méthodes HTTP : GET, POST, PUT, DELETE
            Documents
                • curl -XPUT http://localhost:9200/twitter/tweet/1
                • curl -XGET http://localhost:9200/twitter/tweet/1
                • curl -XDELETE http://localhost:9200/twitter/tweet/1
            Recherche
                • curl -XGET http://localhost:9200/twitter/tweet/_search
                • curl -XGET http://localhost:9200/twitter/_search



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           13
Interagir avec Elasticsearch
            API REST : http://host:port/[index]/[type]/[_action/id]
            Méthodes HTTP : GET, POST, PUT, DELETE
            Documents
                • curl -XPUT http://localhost:9200/twitter/tweet/1
                • curl -XGET http://localhost:9200/twitter/tweet/1
                • curl -XDELETE http://localhost:9200/twitter/tweet/1
            Recherche
                • curl -XGET http://localhost:9200/twitter/tweet/_search
                • curl -XGET http://localhost:9200/twitter/_search
                • curl -XGET http://localhost:9200/_search


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           13
Interagir avec Elasticsearch
            API REST : http://host:port/[index]/[type]/[_action/id]
            Méthodes HTTP : GET, POST, PUT, DELETE
            Documents
                • curl -XPUT http://localhost:9200/twitter/tweet/1
                • curl -XGET http://localhost:9200/twitter/tweet/1
                • curl -XDELETE http://localhost:9200/twitter/tweet/1
            Recherche
                • curl -XGET http://localhost:9200/twitter/tweet/_search
                • curl -XGET http://localhost:9200/twitter/_search
                • curl -XGET http://localhost:9200/_search
            Meta données Elasticsearch
                • curl -XGET http://localhost:9200/twitter/_status
Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           13
Indexons un document
         $ 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.rnAt this time, enjoying
         NoSQL world : CouchDB, ElasticSearch.rnDeeJay 4 times a year, just for fun !" }
         }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                      14
Indexons un document
         $ 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.rnAt this time, enjoying
         NoSQL world : CouchDB, ElasticSearch.rnDeeJay 4 times a year, just for fun !" }
         }'


         {
             "ok":true,
             "_index":"twitter",
             "_type":"tweet",
             "_id":"1"
         }



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                      14
Cherchons un document
          $ curl localhost:9200/twitter/tweet/_search?q=elasticsearch




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        15
Cherchons un document
          $ 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",
                    […]
                  }
                } ]
              }
          }



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         15
Cherchons un document
          $ curl localhost:9200/twitter/tweet/_search?q=elasticsearch

          {
              "took" : 24,
              "timed_out" : false,
                                                     Nb de
                                                   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 #devoxxfr",
                    "created_at": "2012-04-06T20:45:36.000Z",
                    "source": "Twitter for iPad",
                    […]
                  }
                } ]
              }
          }



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         15
Cherchons un document
          $ 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 #devoxxfr",
                    "created_at": "2012-04-06T20:45:36.000Z",
                    "source": "Twitter for iPad",
                    […]
                  }
                } ]
              }
          }



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         15
Cherchons un document
          $ 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",
                    […]

                                                           Pertinence
                  }
                } ]
              }
          }



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         15
Cherchons un document
          $ curl localhost:9200/twitter/tweet/_search?q=elasticsearch

          {
              "took" : 24,
              "timed_out" : false,

                                                            Document
              "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 },
              "hits" : {

                                                             source
                "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",
                    […]
                  }
                } ]
              }
          }



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         15
Les résultats de recherche




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        16
Les résultats de recherche
         • 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"




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                          16
Les résultats de recherche
         • 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"




         • La pertinence est calculée suivant le nombre d'occurrences plus ou
             moins exactes de chaque terme dans un document
          $ curl "localhost:9200/twitter/tweet/_search?q=elasticsearch&explain=true"




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                          16
Quelques types de recherche
       Langage QueryDSL pour les recherches avancées
                  Type                                                             Description
                                  Recherche tout le contenu (pratique avec des filtres)
                                  Recherche avec analyse, jokers (syntaxe Lucene possible* +, -, FROM, TO, ^)
                                  Recherche d'un terme sans analyse préalable
                                  Recherche d'un texte avec analyse (par défaut OR sur chaque token)
                                  Recherche avec joker (*, ?)
                                  Recherche multi-critères (MUST, MUST NOT, SHOULD)
                                  Recherche intervalle (>, >=, <, <=)
                                  Utile pour faire de l'autocomplétion
                                  Filtrage (couplage de filtres et de queries)
                                  Permet des recherches par vraisemblance de termes
                                  Permet de trouver des documents avec un minimum de termes



Moteur Elasticsearch Rivers   Facets   Demo    Architecture Communauté
                                                                                                                17
Quelques types de recherche
       Langage QueryDSL pour les recherches avancées
                     Type                                                                         Description
                  Match 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éalable
                     Text                 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 termes
               More 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

Moteur Elasticsearch Rivers          Facets      Demo      Architecture Communauté
                                                                                                                        17
LA COLLECTE AUTOMATIQUE DE DONNÉES




                                     18
Ou "La vie est un long fleuve tranquille !"
LA COLLECTE AUTOMATIQUE DE DONNÉES




                                              18
La collecte




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                          19
La collecte


                                                                        Stockage
                                                                        Données




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                   19
La collecte

             Doc
                                                                        Stockage
                                                                        Données




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                   19
La collecte


                                                                         Stockage
                                                                         Données
                                                                        Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    20
La collecte

             Doc
                                                                         Stockage
                                                                         Données
                                                                        Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    20
La collecte


                                                                         Stockage
                                                                         Données
                                                                        Doc   Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    21
La collecte


                                                                         Stockage
                                                                         Données
                                                                        Doc   Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    21
La collecte


                                                                         Stockage
                                                                         Données
                                                                        Doc   Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    21
La collecte


                                                                        Stockage
                                                                        Données

                                                                          Doc



                                                                          Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                   22
La collecte

               Doc

                                                                        Stockage
                                                                        Données

                                                                          Doc



                                                                          Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                   22
La collecte


                                                                        Stockage
                                                                        Données
                                                                          Doc




                                                                          Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                   23
La collecte


                                                                        Stockage
                                                                        Données




                                                                          Doc




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                   24
Rivers




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           25
Rivers
         •   CouchDB River




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           25
Rivers
         • CouchDB River
         • MongoDB River




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           25
Rivers
         • CouchDB River
         • MongoDB River
         • Wikipedia River




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           25
Rivers
         • CouchDB River
         • MongoDB River
         • Wikipedia River
         • Twitter River




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           25
Rivers
         •   CouchDB River
         •   MongoDB River
         •   Wikipedia River
         •   Twitter River
         •   RabbitMQ River




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           25
Rivers
         •   CouchDB River
         •   MongoDB River
         •   Wikipedia River
         •   Twitter River
         •   RabbitMQ River
         •   RSS River




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           25
Rivers
         •   CouchDB River
         •   MongoDB River
         •   Wikipedia River
         •   Twitter River
         •   RabbitMQ River
         •   RSS River
         •   Dick Rivers




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                           25
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
Les facettes
                 ID               Username                                Date       Hashtags
                 1                 dadoonet                             2012-04-18      1
                 2                 devoxxfr                             2012-04-18      5
    Des tweets




                 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


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                27
Facette "Term"

              Username                        Date               Hashtags
               dadoonet                2012-04-18                        1
               devoxxfr                2012-04-18                        5
           elasticsearchfr             2012-04-18                        2
               dadoonet                2012-04-18                        2
               devoxxfr                2012-04-18                        6
           elasticsearchfr             2012-04-19                        3
               dadoonet                2012-04-19                        3
               devoxxfr                2012-04-19                        7
           elasticsearchfr             2012-04-20                        4

Moteur Elasticsearch Rivers   Facets   Demo    Architecture Communauté
                                                                             28
Facette "Term"

              Username                        Date               Hashtags
               dadoonet                2012-04-18                        1
               devoxxfr                2012-04-18                        5
           elasticsearchfr             2012-04-18         Username
                                                                 2           Count
               dadoonet                2012-04-18          dadoonet
                                                                  2            3
               devoxxfr                2012-04-18          devoxxfr6           3
           elasticsearchfr             2012-04-19 elasticsearchfr
                                                              3                3
               dadoonet                2012-04-19                        3
               devoxxfr                2012-04-19                        7
           elasticsearchfr             2012-04-20                        4

Moteur Elasticsearch Rivers   Facets   Demo    Architecture Communauté
                                                                                     28
Facette "Term"
                                             "facets" : {
                                               "users" : { "terms" : {"field" : "username"} }
                                         }
  ID              Username                   Date               Hashtags
   1               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


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                29
Facette "Term"
                                             "facets" : {
                                               "users" : { "terms" : {"field" : "username"} }
                                         }
  ID              Username                  Date
                                        "facets" : {    Hashtags
   1               dadoonet              2012-04-18 : {
                                          "users"          1
   2               devoxxfr              2012-04-18 : "terms",
                                            "_type"        5
                                            "missing" : 0,
   3            elasticsearchfr          2012-04-18        2
                                            "total": 9,
   4               dadoonet              2012-04-18
                                            "other": 0,    2
   5               devoxxfr              2012-04-18 : [
                                            "terms"        6
   6            elasticsearchfr               { "term" : "dadoonet", "count" : 3 },
                                         2012-04-19        3
                                              { "term" : "devoxxfr", "count" : 3 },
   7               dadoonet              2012-04-19        3
                                              { "term" : "elasticsearchfr", "count" : 3 }
   8               devoxxfr              2012-04-19
                                            ]              7
   9            elasticsearchfr           }
                                         2012-04-20        4


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                29
Facette "Date Histogram"

ame                 Date                  Hashtags
onet            2012-04-18                      1
xxfr            2012-04-18                      5
archfr          2012-04-18                      2
onet            2012-04-18                      2
xxfr            2012-04-18                      6
archfr          2012-04-19                      3
onet            2012-04-19                      3
xxfr            2012-04-19                      7
archfr          2012-04-20                      4

  Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                          30
Facette "Date Histogram"

ame                 Date                  Hashtags
onet            2012-04-18                      1
                                                                          Par mois
                                                               Date                  Count
xxfr            2012-04-18                      5
                                                              2012-04                  9
archfr          2012-04-18                      2
onet            2012-04-18                      2                         Par jour
xxfr            2012-04-18                      6              Date                  Count
archfr          2012-04-19                      3           2012-04-18                 5
onet            2012-04-19                      3           2012-04-19                 3
xxfr            2012-04-19                      7           2012-04-20                 1
archfr          2012-04-20                      4

  Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                             30
Facette "Date Histogram"
                                          "facets" : {
                                            "perday" : {
                                               "date_histogram" : {
                                                 "field" : "date",
ame                 Date                         "interval" : "day"
                                          Hashtags
                                               }
onet            2012-04-18                  }1
xxfr            2012-04-18                } 5
archfr          2012-04-18                      2
onet            2012-04-18                      2
xxfr            2012-04-18                      6
archfr          2012-04-19                      3
onet            2012-04-19                      3
xxfr            2012-04-19                      7
archfr          2012-04-20                      4

  Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                          31
Facette "Date Histogram"
                                          "facets" : {
                                            "perday" : {
                                               "date_histogram" : {
                                                 "field" : "date",
ame                 Date                         "interval" : "day"
                                          Hashtags
                                               }
onet            2012-04-18                  }1
xxfr            2012-04-18                } 5
archfr          2012-04-18                    2
                                         "facets" : {
onet            2012-04-18                    2
                                           "perday" : {
xxfr            2012-04-18                   "_type" : "date_histogram",
                                              6
                                             "entries": [
archfr          2012-04-19                    3
                                                { "time": 1334700000000, "count": 5 },
onet            2012-04-19                    3 { "time": 1334786400000, "count": 3 },
xxfr            2012-04-19                    7 { "time": 1334872800000, "count": 1 }
                                             ]
archfr          2012-04-20                 } 4
                                         }
  Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         31
Facette "Ranges"

      Hashtags
8           1
8           5
8           2
8           2
8           6
9           3
9           3
9           7
0           4

    Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                            32
Facette "Ranges"

      Hashtags
8           1
8           5
                                           Ranges        Count         Min    Max   Moy     Total
8           2
                                            x<3              3           1     2    1.667    5
8           2
                                       3 <= x < 5            3           3     4    3.333    10
8           6
                                           x >= 5            3           5     7     6       18
9           3
9           3
9           7
0           4

    Moteur Elasticsearch Rivers   Facets    Demo    Architecture Communauté
                                                                                                    32
Facette "Ranges"
                          "facets" : { "hashtags" : {
                            "range" : { "field" : "hashtags",
                            "ranges" : [
                               { "to" : 3 }, { "from" : 3, "to" : 5 }, { "from" : 5 }
      Hashtags              ] } } }
8           1
8           5
8           2
8           2
8           6
9           3
9           3
9           7
0           4

    Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                        33
Facette "Ranges"
                          "facets" : { "hashtags" : {
                            "range" : { "field" : "hashtags",
                            "ranges" : [
                               { "to" : 3 }, { "from" : 3, "to" : 5 }, { "from" : 5 }
      Hashtags              ] } } }
8           1          "facets" : {
8           5            "hashtags" : {
                           "_type" : "range",
8           2              "ranges" : [
8           2                { "to": 3,
8           6                   "count": 3, "min": 1, "max": 2, "total": 5, "mean": 1.667
                             },
9           3                { "from":3, "to" : 5,
9           3                   "count": 3, "min": 3, "max": 4, "total": 10, "mean": 3.333
                             },
9           7                { "from":5,
0           4                   "count": 3, "min": 5, "max": 7, "total": 18, "mean": 6
                             } ] } }
    Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                             33
Usage "site marchand"




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        34
Usage "site marchand"




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        34
Usage "site marchand"




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        34
Usage "site marchand"
                                                                        Ranges




                                                                        Term



                                                                        Term



                                                                        Ranges
Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                 34
La navigation par facettes




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        35
La navigation par facettes

        Critère fixe




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        35
La navigation par facettes

        Critère fixe




   Résultats



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        35
La navigation par facettes

        Critère fixe
                                                                        Term




   Résultats



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                               35
La navigation par facettes

        Critère fixe
                                                                         Term




                                                                        Date histogram
   Résultats



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         35
La navigation par facettes

        Critère fixe
                                                                         Term




                       Ranges                                           Date histogram
   Résultats



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         35
La navigation par facettes




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        36
La navigation par facettes




        Critères




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        36
Analyse temps-réel des données

         • Faire un matchAll sur l'ensemble des données
         • Actualiser toutes les x secondes
         • Indexer en même temps les nouvelles données


                                                                        Date histogram



                                                                        Term



Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                         37
Avons-nous fait du bruit ?
DÉMONSTRATION




                             38
Démonstration : architecture




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        39
Démonstration : architecture




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                        39
Démonstration : architecture

                                                                         Twitter
                                                                        Streaming
                                                                           API




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    39
Démonstration : architecture

                                                                         Twitter
                                                                        Streaming
                                                                           API




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    39
Démonstration : architecture

                                                                         Twitter
                                                                        Streaming
                                                                           API




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                    39
Démonstration : architecture

                                                                                          Twitter
                                                             Twitter                     Streaming
                                                              River                         API


                                 $ curl -XPUT localhost:9200/_river/twitter/_meta -d '
                                 {
                                    "type" : "twitter",
                                    "twitter" : {
                                      "user" : "twitter_user",
                                      "password" : "twitter_passowrd",
                                      "filter" : { "tracks" : ["devoxxfr"] }
                                    }
                                 }'


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                     39
Démonstration : architecture

          Chrome
                                                                                          Twitter
                                                             Twitter                     Streaming
                                                              River                         API


                                 $ curl -XPUT localhost:9200/_river/twitter/_meta -d '
                                 {
                                    "type" : "twitter",
                                    "twitter" : {
                                      "user" : "twitter_user",
                                      "password" : "twitter_passowrd",
                                      "filter" : { "tracks" : ["devoxxfr"] }
                                    }
                                 }'


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                     39
Un peu plus de technique : partitions / réplications / scalabilité
ARCHITECTURE




                                                                     40
Lexique




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                         41
Lexique

           • Nœud (node) : Une instance d'Elasticsearch (~ machine ?)




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                         41
Lexique

           • Nœud (node) : Une instance d'Elasticsearch (~ machine ?)
           • Cluster : Un ensemble de nœuds




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                         41
Lexique

           • 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




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                           41
Lexique

           • 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




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                               41
Lexique

           • 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.




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                       41
Lexique

           • 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.


Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                       41
Créons un index
                                                                                 Cluster

                                                                        Nœud 1




                                                                                  Client
                                                                                  CURL




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                           42
Créons un index
          $ curl -XPUT localhost:9200/twitter -d '{                                              Cluster
             "index" : {
               "number_of_shards" : 2,
                                                                                       Nœud 1
               "number_of_replicas" : 1                                                Shard 0
             }
          }'                                                                           Shard 1




                                                           réplication non respectée
                                                                                                  Client
                                                                                                  CURL




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                           42
Créons un index
          $ curl -XPUT localhost:9200/twitter -d '{                                            Cluster
             "index" : {
               "number_of_shards" : 2,                                               Nœud 1              Nœud 2
               "number_of_replicas" : 1                                              Shard 0             Shard 0
             }
          }'                                                                         Shard 1             Shard 1




                                                             réplication respectée
                                                                                                Client
                                                                                                CURL




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                   42
Réallocation dynamique
                                                                      Cluster

                                   Nœud 1                 Nœud 2
                                       Shard 0              Shard 0


                                       Shard 1              Shard 1




Moteur Elasticsearch Rivers   Facets    Demo     Architecture Communauté
                                                                                43
Réallocation dynamique
                                                                      Cluster

                                   Nœud 1                 Nœud 2                Nœud 3
                                       Shard 0              Shard 0


                                       Shard 1              Shard 1




Moteur Elasticsearch Rivers   Facets    Demo     Architecture Communauté
                                                                                         43
Réallocation dynamique
                                                                      Cluster

                                   Nœud 1                 Nœud 2                Nœud 3
                                       Shard 0              Shard 0             Shard 0


                                       Shard 1              Shard 1




Moteur Elasticsearch Rivers   Facets    Demo     Architecture Communauté
                                                                                          44
Réallocation dynamique
                                                                      Cluster

                                   Nœud 1                 Nœud 2                Nœud 3
                                       Shard 0                                  Shard 0


                                       Shard 1              Shard 1




Moteur Elasticsearch Rivers   Facets    Demo     Architecture Communauté
                                                                                          44
Réallocation dynamique
                                                                      Cluster

                                   Nœud 1                 Nœud 2                Nœud 3    Nœud 4
                                       Shard 0                                  Shard 0


                                       Shard 1              Shard 1




Moteur Elasticsearch Rivers   Facets    Demo     Architecture Communauté
                                                                                                   44
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 1




Moteur Elasticsearch Rivers   Facets    Demo     Architecture Communauté
                                                                                                    45
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, c'est trouver le bon équilibre entre le nombre
                                                 de nodes, shards et replicas !



Moteur Elasticsearch Rivers   Facets    Demo     Architecture Communauté
                                                                                                      45
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 #devoxxfr",
                                                                         "created_at": "2012-04-06T20:45:36.000Z",
                                                                         "source": "Twitter for iPad",
                                                                         ...
                                                                    }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                                              46
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 #devoxxfr",
                                                                            "created_at": "2012-04-06T20:45:36.000Z",
                                                                            "source": "Twitter for iPad",
                                                                            ...
                                                                       }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                                                 47
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 #devoxxfr",
                                                                            "created_at": "2012-04-06T20:45:36.000Z",
                                                                            "source": "Twitter for iPad",
                                                                            ...
                                                                       }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                                                 47
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 #devoxxfr",
                                                                            "created_at": "2012-04-06T20:45:36.000Z",
                                                                            "source": "Twitter for iPad",
                                                                            ...
                                                                       }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                                                 48
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 à #devoxxfr",
                                                                            "created_at": "2012-04-06T21:12:52.000Z",
                                                                            "source": "Twitter for iPad",
                                                                            ...
                                                                       }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                                          49
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 à #devoxxfr",
                                    "created_at": "2012-04-06T21:12:52.000Z",
                                    "source": "Twitter for iPad",
                                    ...
                               }'




                                                                                                  50
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 à #devoxxfr",
                                                                            "created_at": "2012-04-06T21:12:52.000Z",
                                                                            "source": "Twitter for iPad",
                                                                            ...
                                                                       }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                                          51
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 à #devoxxfr",
                                                                            "created_at": "2012-04-06T21:12:52.000Z",
                                                                            "source": "Twitter for iPad",
                                                                            ...
                                                                       }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                                          51
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 à #devoxxfr",
                                                                            "created_at": "2012-04-06T21:12:52.000Z",
                                                                            "source": "Twitter for iPad",
                                                                            ...
                                                                       }'




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                                          52
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
                                                        CURL




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                         53
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
                                                        CURL




Moteur Elasticsearch Rivers   Facets   Demo   Architecture Communauté
                                                                                                                         53
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012

More Related Content

What's hot

Finist JUG - Elasticsearch
Finist JUG - ElasticsearchFinist JUG - Elasticsearch
Finist JUG - ElasticsearchDavid Pilato
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Silicon Comté
 
Elasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUGElasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUGDavid Pilato
 
Tirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearchTirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearchSéven Le Mesle
 
Moteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchMoteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchAudrey Neveu
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchfrancelabs
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab ElasticsearchDavid Pilato
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchDavid Pilato
 
Tunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriTunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriAymen ZAAFOURI
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic searchJEMLI Fathi
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
 
Paris data geek - Elasticsearch
Paris data geek - ElasticsearchParis data geek - Elasticsearch
Paris data geek - ElasticsearchDavid Pilato
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchDavid Pilato
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudriaDavid Pilato
 
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...Bruno Bonnin
 
Solr retour d'experience
Solr retour d'experienceSolr retour d'experience
Solr retour d'experienceCrossknowledge
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - ElasticsearchDavid Pilato
 
Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012David Pilato
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielModern Data Stack France
 

What's hot (20)

Finist JUG - Elasticsearch
Finist JUG - ElasticsearchFinist JUG - Elasticsearch
Finist JUG - Elasticsearch
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014
 
Elasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUGElasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUG
 
Tirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearchTirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearch
 
Moteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchMoteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic Search
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - Elasticsearch
 
Tunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriTunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouri
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic search
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
Paris data geek - Elasticsearch
Paris data geek - ElasticsearchParis data geek - Elasticsearch
Paris data geek - Elasticsearch
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - Elasticsearch
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudria
 
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
 
Solr retour d'experience
Solr retour d'experienceSolr retour d'experience
Solr retour d'experience
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - Elasticsearch
 
Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overview
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
 

Viewers also liked

Elasticsearch in 15 minutes
Elasticsearch in 15 minutesElasticsearch in 15 minutes
Elasticsearch in 15 minutesDavid Pilato
 
Building an ETL pipeline for Elasticsearch using Spark
Building an ETL pipeline for Elasticsearch using SparkBuilding an ETL pipeline for Elasticsearch using Spark
Building an ETL pipeline for Elasticsearch using SparkItai Yaffe
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic IntroductionMayur Rathod
 
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch ALTER WAY
 
Référentiel et Moteur de Recherche
Référentiel et Moteur de RechercheRéférentiel et Moteur de Recherche
Référentiel et Moteur de RechercheAntidot
 
Comment choisir un moteur de recherche ?
Comment choisir un moteur de recherche  ?Comment choisir un moteur de recherche  ?
Comment choisir un moteur de recherche ?Gilles Balmisse
 
Comparatif moteur de recherche
Comparatif moteur de rechercheComparatif moteur de recherche
Comparatif moteur de rechercheDavid Gracia
 
Drupal and Elasticsearch
Drupal and ElasticsearchDrupal and Elasticsearch
Drupal and ElasticsearchNikolay Ignatov
 
Integrating Elastic and Apache Spark - Elastic London Meetup (2015-09-24)
Integrating Elastic and Apache Spark - Elastic London Meetup (2015-09-24)Integrating Elastic and Apache Spark - Elastic London Meetup (2015-09-24)
Integrating Elastic and Apache Spark - Elastic London Meetup (2015-09-24)Neil Andrassy
 
The modern analytics architecture
The modern analytics architectureThe modern analytics architecture
The modern analytics architectureJoseph D'Antoni
 
Large scale near real-time log indexing with Flume and SolrCloud
Large scale near real-time log indexing with Flume and SolrCloudLarge scale near real-time log indexing with Flume and SolrCloud
Large scale near real-time log indexing with Flume and SolrCloudDataWorks Summit
 
Hadoop and Spark Analytics over Better Storage
Hadoop and Spark Analytics over Better StorageHadoop and Spark Analytics over Better Storage
Hadoop and Spark Analytics over Better StorageSandeep Patil
 
2015-06-15 Large-Scale Elastic-Net Regularized Generalized Linear Models at S...
2015-06-15 Large-Scale Elastic-Net Regularized Generalized Linear Models at S...2015-06-15 Large-Scale Elastic-Net Regularized Generalized Linear Models at S...
2015-06-15 Large-Scale Elastic-Net Regularized Generalized Linear Models at S...DB Tsai
 
Architecture for Real-Time and Batch Big Data Analytics
Architecture for Real-Time and Batch Big Data AnalyticsArchitecture for Real-Time and Batch Big Data Analytics
Architecture for Real-Time and Batch Big Data AnalyticsNir Rubinstein
 
2014 spark with elastic search
2014   spark with elastic search2014   spark with elastic search
2014 spark with elastic searchHenry Saputra
 
Drupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + DockerDrupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + DockerRoald Umandal
 
ElasticSearch on AWS
ElasticSearch on AWSElasticSearch on AWS
ElasticSearch on AWSPhilipp Garbe
 

Viewers also liked (20)

Elasticsearch in 15 minutes
Elasticsearch in 15 minutesElasticsearch in 15 minutes
Elasticsearch in 15 minutes
 
Building an ETL pipeline for Elasticsearch using Spark
Building an ETL pipeline for Elasticsearch using SparkBuilding an ETL pipeline for Elasticsearch using Spark
Building an ETL pipeline for Elasticsearch using Spark
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic Introduction
 
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
 
Référentiel et Moteur de Recherche
Référentiel et Moteur de RechercheRéférentiel et Moteur de Recherche
Référentiel et Moteur de Recherche
 
Comment choisir un moteur de recherche ?
Comment choisir un moteur de recherche  ?Comment choisir un moteur de recherche  ?
Comment choisir un moteur de recherche ?
 
Comparatif moteur de recherche
Comparatif moteur de rechercheComparatif moteur de recherche
Comparatif moteur de recherche
 
Referencement moteur de-recherche
Referencement moteur de-rechercheReferencement moteur de-recherche
Referencement moteur de-recherche
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Drupal and Elasticsearch
Drupal and ElasticsearchDrupal and Elasticsearch
Drupal and Elasticsearch
 
Integrating Elastic and Apache Spark - Elastic London Meetup (2015-09-24)
Integrating Elastic and Apache Spark - Elastic London Meetup (2015-09-24)Integrating Elastic and Apache Spark - Elastic London Meetup (2015-09-24)
Integrating Elastic and Apache Spark - Elastic London Meetup (2015-09-24)
 
963
963963
963
 
The modern analytics architecture
The modern analytics architectureThe modern analytics architecture
The modern analytics architecture
 
Large scale near real-time log indexing with Flume and SolrCloud
Large scale near real-time log indexing with Flume and SolrCloudLarge scale near real-time log indexing with Flume and SolrCloud
Large scale near real-time log indexing with Flume and SolrCloud
 
Hadoop and Spark Analytics over Better Storage
Hadoop and Spark Analytics over Better StorageHadoop and Spark Analytics over Better Storage
Hadoop and Spark Analytics over Better Storage
 
2015-06-15 Large-Scale Elastic-Net Regularized Generalized Linear Models at S...
2015-06-15 Large-Scale Elastic-Net Regularized Generalized Linear Models at S...2015-06-15 Large-Scale Elastic-Net Regularized Generalized Linear Models at S...
2015-06-15 Large-Scale Elastic-Net Regularized Generalized Linear Models at S...
 
Architecture for Real-Time and Batch Big Data Analytics
Architecture for Real-Time and Batch Big Data AnalyticsArchitecture for Real-Time and Batch Big Data Analytics
Architecture for Real-Time and Batch Big Data Analytics
 
2014 spark with elastic search
2014   spark with elastic search2014   spark with elastic search
2014 spark with elastic search
 
Drupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + DockerDrupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + Docker
 
ElasticSearch on AWS
ElasticSearch on AWSElasticSearch on AWS
ElasticSearch on AWS
 

Similar to Elasticsearch - Devoxx France 2012

Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014francelabs
 
June Spark meetup : search as recommandation
June Spark meetup : search as recommandationJune Spark meetup : search as recommandation
June Spark meetup : search as recommandationModern Data Stack France
 
Presentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUGPresentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUGfrancelabs
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Laurent Guérin
 
I don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry piI don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry piadelegue
 
Geneva jug Lucene Solr
Geneva jug Lucene Solr Geneva jug Lucene Solr
Geneva jug Lucene Solr francelabs
 
Architecture d’une app qui fait 5 millions de visites par mois
Architecture d’une app qui fait 5 millions de visites par moisArchitecture d’une app qui fait 5 millions de visites par mois
Architecture d’une app qui fait 5 millions de visites par moisJulien Carnelos
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .netHamza SAID
 
Créer un moteur de recherche avec des logiciels libres
Créer un moteur de recherche avec des logiciels libresCréer un moteur de recherche avec des logiciels libres
Créer un moteur de recherche avec des logiciels libresRobert Viseur
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...Frederic Descamps
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Olivier Eeckhoutte
 
Introduction au web des données (Linked Data)
Introduction au web des données (Linked Data)Introduction au web des données (Linked Data)
Introduction au web des données (Linked Data)BorderCloud
 
Paris Tug - Session d'octobre
Paris Tug - Session d'octobreParis Tug - Session d'octobre
Paris Tug - Session d'octobreGeoffrey Felix
 
Presentation of Oracle database products for Beginners
Presentation of Oracle database products for BeginnersPresentation of Oracle database products for Beginners
Presentation of Oracle database products for Beginnersyazidaguedal
 
Presentation of Oracle database products
Presentation of Oracle database productsPresentation of Oracle database products
Presentation of Oracle database productsAlgiers Tech Meetup
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Duyhai Doan
 
Mise en place d’un moteur de recherche et de recommandation de documents text...
Mise en place d’un moteur de recherche et de recommandation de documents text...Mise en place d’un moteur de recherche et de recommandation de documents text...
Mise en place d’un moteur de recherche et de recommandation de documents text...AbdeslamAMRANE3
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech
 

Similar to Elasticsearch - Devoxx France 2012 (20)

Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
 
June Spark meetup : search as recommandation
June Spark meetup : search as recommandationJune Spark meetup : search as recommandation
June Spark meetup : search as recommandation
 
Presentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUGPresentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUG
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
 
I don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry piI don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry pi
 
Geneva jug Lucene Solr
Geneva jug Lucene Solr Geneva jug Lucene Solr
Geneva jug Lucene Solr
 
Architecture d’une app qui fait 5 millions de visites par mois
Architecture d’une app qui fait 5 millions de visites par moisArchitecture d’une app qui fait 5 millions de visites par mois
Architecture d’une app qui fait 5 millions de visites par mois
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net
 
Créer un moteur de recherche avec des logiciels libres
Créer un moteur de recherche avec des logiciels libresCréer un moteur de recherche avec des logiciels libres
Créer un moteur de recherche avec des logiciels libres
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)
 
Introduction au web des données (Linked Data)
Introduction au web des données (Linked Data)Introduction au web des données (Linked Data)
Introduction au web des données (Linked Data)
 
Paris Tug - Session d'octobre
Paris Tug - Session d'octobreParis Tug - Session d'octobre
Paris Tug - Session d'octobre
 
Presentation of Oracle database products for Beginners
Presentation of Oracle database products for BeginnersPresentation of Oracle database products for Beginners
Presentation of Oracle database products for Beginners
 
Presentation of Oracle database products
Presentation of Oracle database productsPresentation of Oracle database products
Presentation of Oracle database products
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016
 
Nouveaux apis
Nouveaux apisNouveaux apis
Nouveaux apis
 
Mise en place d’un moteur de recherche et de recommandation de documents text...
Mise en place d’un moteur de recherche et de recommandation de documents text...Mise en place d’un moteur de recherche et de recommandation de documents text...
Mise en place d’un moteur de recherche et de recommandation de documents text...
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
 

More from David Pilato

2018-10-02 - Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouv...
2018-10-02 - Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouv...2018-10-02 - Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouv...
2018-10-02 - Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouv...David Pilato
 
Managing your black friday logs Voxxed Luxembourg
Managing your black friday logs Voxxed LuxembourgManaging your black friday logs Voxxed Luxembourg
Managing your black friday logs Voxxed LuxembourgDavid Pilato
 
Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouver...
Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouver...Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouver...
Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouver...David Pilato
 
Managing your Black Friday Logs NDC Oslo
Managing your  Black Friday Logs NDC OsloManaging your  Black Friday Logs NDC Oslo
Managing your Black Friday Logs NDC OsloDavid Pilato
 
Managing your black friday logs - Code Europe
Managing your black friday logs - Code EuropeManaging your black friday logs - Code Europe
Managing your black friday logs - Code EuropeDavid Pilato
 
Managing your black Friday logs - CloudConf.IT
Managing your black Friday logs - CloudConf.ITManaging your black Friday logs - CloudConf.IT
Managing your black Friday logs - CloudConf.ITDavid Pilato
 
Elastify you application: from SQL to NoSQL in less than one hour!
Elastify you application: from SQL to NoSQL in less than one hour!Elastify you application: from SQL to NoSQL in less than one hour!
Elastify you application: from SQL to NoSQL in less than one hour!David Pilato
 
Elasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionElasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionDavid Pilato
 

More from David Pilato (8)

2018-10-02 - Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouv...
2018-10-02 - Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouv...2018-10-02 - Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouv...
2018-10-02 - Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouv...
 
Managing your black friday logs Voxxed Luxembourg
Managing your black friday logs Voxxed LuxembourgManaging your black friday logs Voxxed Luxembourg
Managing your black friday logs Voxxed Luxembourg
 
Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouver...
Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouver...Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouver...
Un moteur de recherche NoSQL pour chercher^H^H^H^H^H^H^H^H trouver...
 
Managing your Black Friday Logs NDC Oslo
Managing your  Black Friday Logs NDC OsloManaging your  Black Friday Logs NDC Oslo
Managing your Black Friday Logs NDC Oslo
 
Managing your black friday logs - Code Europe
Managing your black friday logs - Code EuropeManaging your black friday logs - Code Europe
Managing your black friday logs - Code Europe
 
Managing your black Friday logs - CloudConf.IT
Managing your black Friday logs - CloudConf.ITManaging your black Friday logs - CloudConf.IT
Managing your black Friday logs - CloudConf.IT
 
Elastify you application: from SQL to NoSQL in less than one hour!
Elastify you application: from SQL to NoSQL in less than one hour!Elastify you application: from SQL to NoSQL in less than one hour!
Elastify you application: from SQL to NoSQL in less than one hour!
 
Elasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionElasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English version
 

Elasticsearch - Devoxx France 2012

  • 1. Elasticsearch : moteur de recherche taillé pour le cloud par David Pilato @dadoonet et @elasticsearchfr 1
  • 2. { “speaker” : “David Pilato” } $ 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" : "david@pilato.fr" } 2
  • 3. Abstract • 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 ! 3
  • 4. Un moteur ? Pour quoi faire ? LE BESOIN 4
  • 5. Cas d'école « SQL old school » 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." Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 5
  • 6. Cas d'école « SQL old school » Un document dans une base de données : doc pays • Un attribut date : 19/04/2012 date code • Un attribut codifié pays : FR pays libelle • Correspondant à la table d’association code/libellé commentaire • 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." Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 5
  • 7. 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 : Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 6
  • 8. 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 : 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 ‘%saisie%' AND lower(doc.commentaire) LIKE ‘%david%'; Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 6
  • 9. Performances du like ‘%’ Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 7
  • 10. Performances du like ‘%’ Voir aussi : http://www.cestpasdur.com/2012/04/01/elasticsearch-vs-mysql-recherche Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 7
  • 11. C'est quoi un moteur ? Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 8
  • 12. C'est quoi un moteur ? • Un moteur de recherche est composé de : • un moteur d’indexation de documents • un moteur de recherche sur les index Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 8
  • 13. C'est quoi un moteur ? • 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 : Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 8
  • 14. C'est quoi un moteur ? • 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 ! Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 8
  • 16. Your Data, your Search ! ELASTICSEARCH 9
  • 17. Elasticsearch Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 10
  • 18. Elasticsearch • Moteur de recherche pour la génération NoSQL Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 10
  • 19. Elasticsearch • Moteur de recherche pour la génération NoSQL • Basé sur le standard Apache Lucene Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 10
  • 20. 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 10
  • 21. 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 10
  • 22. 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 10
  • 23. 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 ! Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 10
  • 24. Points clés Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 11
  • 25. Points clés • Simple ! En quelques minutes (Zero Conf), on dispose d’un moteur complet prêt à recevoir nos documents à indexer et à faire des recherches. Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 11
  • 26. Points clés • 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. Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 11
  • 27. Points clés • 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) Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 11
  • 28. Points clés • 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, … Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 11
  • 29. Ranger ses données Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 12
  • 30. Ranger ses données • Document : Un objet représentant les données (au sens NoSQL). Penser "recherche", c'est oublier le SGBDR et penser "Documents" Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 12
  • 31. Ranger ses données • 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, Un tweet "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.rnAt this time, enjoying NoSQL world : CouchDB, ElasticSearch.rnDeeJay 4 times a year, just for fun !" } } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 12
  • 32. Ranger ses données • 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, Un tweet "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.rnAt this time, enjoying NoSQL world : CouchDB, ElasticSearch.rnDeeJay 4 times a year, just for fun !" } } • Type : Regroupe des documents de même type Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 12
  • 33. Ranger ses données • 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, Un tweet "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.rnAt this time, enjoying NoSQL world : CouchDB, ElasticSearch.rnDeeJay 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 12
  • 34. Interagir avec Elasticsearch API REST : http://host:port/[index]/[type]/[_action/id] Méthodes HTTP : GET, POST, PUT, DELETE Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 13
  • 35. Interagir avec Elasticsearch API REST : http://host:port/[index]/[type]/[_action/id] Méthodes HTTP : GET, POST, PUT, DELETE Documents • curl -XPUT http://localhost:9200/twitter/tweet/1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 13
  • 36. Interagir avec Elasticsearch API REST : http://host:port/[index]/[type]/[_action/id] Méthodes HTTP : GET, POST, PUT, DELETE Documents • curl -XPUT http://localhost:9200/twitter/tweet/1 • curl -XGET http://localhost:9200/twitter/tweet/1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 13
  • 37. Interagir avec Elasticsearch API REST : http://host:port/[index]/[type]/[_action/id] Méthodes HTTP : GET, POST, PUT, DELETE Documents • curl -XPUT http://localhost:9200/twitter/tweet/1 • curl -XGET http://localhost:9200/twitter/tweet/1 • curl -XDELETE http://localhost:9200/twitter/tweet/1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 13
  • 38. Interagir avec Elasticsearch API REST : http://host:port/[index]/[type]/[_action/id] Méthodes HTTP : GET, POST, PUT, DELETE Documents • curl -XPUT http://localhost:9200/twitter/tweet/1 • curl -XGET http://localhost:9200/twitter/tweet/1 • curl -XDELETE http://localhost:9200/twitter/tweet/1 Recherche • curl -XGET http://localhost:9200/twitter/tweet/_search Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 13
  • 39. Interagir avec Elasticsearch API REST : http://host:port/[index]/[type]/[_action/id] Méthodes HTTP : GET, POST, PUT, DELETE Documents • curl -XPUT http://localhost:9200/twitter/tweet/1 • curl -XGET http://localhost:9200/twitter/tweet/1 • curl -XDELETE http://localhost:9200/twitter/tweet/1 Recherche • curl -XGET http://localhost:9200/twitter/tweet/_search • curl -XGET http://localhost:9200/twitter/_search Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 13
  • 40. Interagir avec Elasticsearch API REST : http://host:port/[index]/[type]/[_action/id] Méthodes HTTP : GET, POST, PUT, DELETE Documents • curl -XPUT http://localhost:9200/twitter/tweet/1 • curl -XGET http://localhost:9200/twitter/tweet/1 • curl -XDELETE http://localhost:9200/twitter/tweet/1 Recherche • curl -XGET http://localhost:9200/twitter/tweet/_search • curl -XGET http://localhost:9200/twitter/_search • curl -XGET http://localhost:9200/_search Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 13
  • 41. Interagir avec Elasticsearch API REST : http://host:port/[index]/[type]/[_action/id] Méthodes HTTP : GET, POST, PUT, DELETE Documents • curl -XPUT http://localhost:9200/twitter/tweet/1 • curl -XGET http://localhost:9200/twitter/tweet/1 • curl -XDELETE http://localhost:9200/twitter/tweet/1 Recherche • curl -XGET http://localhost:9200/twitter/tweet/_search • curl -XGET http://localhost:9200/twitter/_search • curl -XGET http://localhost:9200/_search Meta données Elasticsearch • curl -XGET http://localhost:9200/twitter/_status Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 13
  • 42. Indexons un document $ 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.rnAt this time, enjoying NoSQL world : CouchDB, ElasticSearch.rnDeeJay 4 times a year, just for fun !" } }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 14
  • 43. Indexons un document $ 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.rnAt this time, enjoying NoSQL world : CouchDB, ElasticSearch.rnDeeJay 4 times a year, just for fun !" } }' { "ok":true, "_index":"twitter", "_type":"tweet", "_id":"1" } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 14
  • 44. Cherchons un document $ curl localhost:9200/twitter/tweet/_search?q=elasticsearch Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 15
  • 45. Cherchons un document $ 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", […] } } ] } } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 15
  • 46. Cherchons un document $ curl localhost:9200/twitter/tweet/_search?q=elasticsearch { "took" : 24, "timed_out" : false, Nb de 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 #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", […] } } ] } } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 15
  • 47. Cherchons un document $ 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 #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", […] } } ] } } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 15
  • 48. Cherchons un document $ 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", […] Pertinence } } ] } } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 15
  • 49. Cherchons un document $ curl localhost:9200/twitter/tweet/_search?q=elasticsearch { "took" : 24, "timed_out" : false, Document "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { source "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", […] } } ] } } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 15
  • 50. Les résultats de recherche Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 16
  • 51. Les résultats de recherche • 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" Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 16
  • 52. Les résultats de recherche • 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" • La pertinence est calculée suivant le nombre d'occurrences plus ou moins exactes de chaque terme dans un document $ curl "localhost:9200/twitter/tweet/_search?q=elasticsearch&explain=true" Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 16
  • 53. Quelques types de recherche Langage QueryDSL pour les recherches avancées Type Description Recherche tout le contenu (pratique avec des filtres) Recherche avec analyse, jokers (syntaxe Lucene possible* +, -, FROM, TO, ^) Recherche d'un terme sans analyse préalable Recherche d'un texte avec analyse (par défaut OR sur chaque token) Recherche avec joker (*, ?) Recherche multi-critères (MUST, MUST NOT, SHOULD) Recherche intervalle (>, >=, <, <=) Utile pour faire de l'autocomplétion Filtrage (couplage de filtres et de queries) Permet des recherches par vraisemblance de termes Permet de trouver des documents avec un minimum de termes Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 17
  • 54. Quelques types de recherche Langage QueryDSL pour les recherches avancées Type Description Match 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éalable Text 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 termes More 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 17
  • 55. LA COLLECTE AUTOMATIQUE DE DONNÉES 18
  • 56. Ou "La vie est un long fleuve tranquille !" LA COLLECTE AUTOMATIQUE DE DONNÉES 18
  • 57. La collecte Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 19
  • 58. La collecte Stockage Données Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 19
  • 59. La collecte Doc Stockage Données Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 19
  • 60. La collecte Stockage Données Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 20
  • 61. La collecte Doc Stockage Données Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 20
  • 62. La collecte Stockage Données Doc Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 21
  • 63. La collecte Stockage Données Doc Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 21
  • 64. La collecte Stockage Données Doc Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 21
  • 65. La collecte Stockage Données Doc Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 22
  • 66. La collecte Doc Stockage Données Doc Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 22
  • 67. La collecte Stockage Données Doc Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 23
  • 68. La collecte Stockage Données Doc Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 24
  • 69. Rivers Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 25
  • 70. Rivers • CouchDB River Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 25
  • 71. Rivers • CouchDB River • MongoDB River Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 25
  • 72. Rivers • CouchDB River • MongoDB River • Wikipedia River Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 25
  • 73. Rivers • CouchDB River • MongoDB River • Wikipedia River • Twitter River Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 25
  • 74. Rivers • CouchDB River • MongoDB River • Wikipedia River • Twitter River • RabbitMQ River Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 25
  • 75. Rivers • CouchDB River • MongoDB River • Wikipedia River • Twitter River • RabbitMQ River • RSS River Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 25
  • 76. Rivers • CouchDB River • MongoDB River • Wikipedia River • Twitter River • RabbitMQ River • RSS River • Dick Rivers Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 25
  • 77. 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
  • 78. Les facettes ID Username Date Hashtags 1 dadoonet 2012-04-18 1 2 devoxxfr 2012-04-18 5 Des tweets 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 27
  • 79. Facette "Term" Username Date Hashtags dadoonet 2012-04-18 1 devoxxfr 2012-04-18 5 elasticsearchfr 2012-04-18 2 dadoonet 2012-04-18 2 devoxxfr 2012-04-18 6 elasticsearchfr 2012-04-19 3 dadoonet 2012-04-19 3 devoxxfr 2012-04-19 7 elasticsearchfr 2012-04-20 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 28
  • 80. Facette "Term" Username Date Hashtags dadoonet 2012-04-18 1 devoxxfr 2012-04-18 5 elasticsearchfr 2012-04-18 Username 2 Count dadoonet 2012-04-18 dadoonet 2 3 devoxxfr 2012-04-18 devoxxfr6 3 elasticsearchfr 2012-04-19 elasticsearchfr 3 3 dadoonet 2012-04-19 3 devoxxfr 2012-04-19 7 elasticsearchfr 2012-04-20 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 28
  • 81. Facette "Term" "facets" : { "users" : { "terms" : {"field" : "username"} } } ID Username Date Hashtags 1 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 29
  • 82. Facette "Term" "facets" : { "users" : { "terms" : {"field" : "username"} } } ID Username Date "facets" : { Hashtags 1 dadoonet 2012-04-18 : { "users" 1 2 devoxxfr 2012-04-18 : "terms", "_type" 5 "missing" : 0, 3 elasticsearchfr 2012-04-18 2 "total": 9, 4 dadoonet 2012-04-18 "other": 0, 2 5 devoxxfr 2012-04-18 : [ "terms" 6 6 elasticsearchfr { "term" : "dadoonet", "count" : 3 }, 2012-04-19 3 { "term" : "devoxxfr", "count" : 3 }, 7 dadoonet 2012-04-19 3 { "term" : "elasticsearchfr", "count" : 3 } 8 devoxxfr 2012-04-19 ] 7 9 elasticsearchfr } 2012-04-20 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 29
  • 83. Facette "Date Histogram" ame Date Hashtags onet 2012-04-18 1 xxfr 2012-04-18 5 archfr 2012-04-18 2 onet 2012-04-18 2 xxfr 2012-04-18 6 archfr 2012-04-19 3 onet 2012-04-19 3 xxfr 2012-04-19 7 archfr 2012-04-20 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 30
  • 84. Facette "Date Histogram" ame Date Hashtags onet 2012-04-18 1 Par mois Date Count xxfr 2012-04-18 5 2012-04 9 archfr 2012-04-18 2 onet 2012-04-18 2 Par jour xxfr 2012-04-18 6 Date Count archfr 2012-04-19 3 2012-04-18 5 onet 2012-04-19 3 2012-04-19 3 xxfr 2012-04-19 7 2012-04-20 1 archfr 2012-04-20 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 30
  • 85. Facette "Date Histogram" "facets" : { "perday" : { "date_histogram" : { "field" : "date", ame Date "interval" : "day" Hashtags } onet 2012-04-18 }1 xxfr 2012-04-18 } 5 archfr 2012-04-18 2 onet 2012-04-18 2 xxfr 2012-04-18 6 archfr 2012-04-19 3 onet 2012-04-19 3 xxfr 2012-04-19 7 archfr 2012-04-20 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 31
  • 86. Facette "Date Histogram" "facets" : { "perday" : { "date_histogram" : { "field" : "date", ame Date "interval" : "day" Hashtags } onet 2012-04-18 }1 xxfr 2012-04-18 } 5 archfr 2012-04-18 2 "facets" : { onet 2012-04-18 2 "perday" : { xxfr 2012-04-18 "_type" : "date_histogram", 6 "entries": [ archfr 2012-04-19 3 { "time": 1334700000000, "count": 5 }, onet 2012-04-19 3 { "time": 1334786400000, "count": 3 }, xxfr 2012-04-19 7 { "time": 1334872800000, "count": 1 } ] archfr 2012-04-20 } 4 } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 31
  • 87. Facette "Ranges" Hashtags 8 1 8 5 8 2 8 2 8 6 9 3 9 3 9 7 0 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 32
  • 88. Facette "Ranges" Hashtags 8 1 8 5 Ranges Count Min Max Moy Total 8 2 x<3 3 1 2 1.667 5 8 2 3 <= x < 5 3 3 4 3.333 10 8 6 x >= 5 3 5 7 6 18 9 3 9 3 9 7 0 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 32
  • 89. Facette "Ranges" "facets" : { "hashtags" : { "range" : { "field" : "hashtags", "ranges" : [ { "to" : 3 }, { "from" : 3, "to" : 5 }, { "from" : 5 } Hashtags ] } } } 8 1 8 5 8 2 8 2 8 6 9 3 9 3 9 7 0 4 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 33
  • 90. Facette "Ranges" "facets" : { "hashtags" : { "range" : { "field" : "hashtags", "ranges" : [ { "to" : 3 }, { "from" : 3, "to" : 5 }, { "from" : 5 } Hashtags ] } } } 8 1 "facets" : { 8 5 "hashtags" : { "_type" : "range", 8 2 "ranges" : [ 8 2 { "to": 3, 8 6 "count": 3, "min": 1, "max": 2, "total": 5, "mean": 1.667 }, 9 3 { "from":3, "to" : 5, 9 3 "count": 3, "min": 3, "max": 4, "total": 10, "mean": 3.333 }, 9 7 { "from":5, 0 4 "count": 3, "min": 5, "max": 7, "total": 18, "mean": 6 } ] } } Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 33
  • 91. Usage "site marchand" Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 34
  • 92. Usage "site marchand" Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 34
  • 93. Usage "site marchand" Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 34
  • 94. Usage "site marchand" Ranges Term Term Ranges Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 34
  • 95. La navigation par facettes Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 35
  • 96. La navigation par facettes Critère fixe Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 35
  • 97. La navigation par facettes Critère fixe Résultats Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 35
  • 98. La navigation par facettes Critère fixe Term Résultats Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 35
  • 99. La navigation par facettes Critère fixe Term Date histogram Résultats Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 35
  • 100. La navigation par facettes Critère fixe Term Ranges Date histogram Résultats Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 35
  • 101. La navigation par facettes Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 36
  • 102. La navigation par facettes Critères Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 36
  • 103. Analyse temps-réel des données • Faire un matchAll sur l'ensemble des données • Actualiser toutes les x secondes • Indexer en même temps les nouvelles données Date histogram Term Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 37
  • 104. Avons-nous fait du bruit ? DÉMONSTRATION 38
  • 105. Démonstration : architecture Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 39
  • 106. Démonstration : architecture Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 39
  • 107. Démonstration : architecture Twitter Streaming API Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 39
  • 108. Démonstration : architecture Twitter Streaming API Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 39
  • 109. Démonstration : architecture Twitter Streaming API Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 39
  • 110. Démonstration : architecture Twitter Twitter Streaming River API $ curl -XPUT localhost:9200/_river/twitter/_meta -d ' { "type" : "twitter", "twitter" : { "user" : "twitter_user", "password" : "twitter_passowrd", "filter" : { "tracks" : ["devoxxfr"] } } }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 39
  • 111. Démonstration : architecture Chrome Twitter Twitter Streaming River API $ curl -XPUT localhost:9200/_river/twitter/_meta -d ' { "type" : "twitter", "twitter" : { "user" : "twitter_user", "password" : "twitter_passowrd", "filter" : { "tracks" : ["devoxxfr"] } } }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 39
  • 112. Un peu plus de technique : partitions / réplications / scalabilité ARCHITECTURE 40
  • 113. Lexique Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 41
  • 114. Lexique • Nœud (node) : Une instance d'Elasticsearch (~ machine ?) Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 41
  • 115. Lexique • Nœud (node) : Une instance d'Elasticsearch (~ machine ?) • Cluster : Un ensemble de nœuds Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 41
  • 116. Lexique • 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 41
  • 117. Lexique • 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 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 41
  • 118. Lexique • 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. Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 41
  • 119. Lexique • 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. Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 41
  • 120. Créons un index Cluster Nœud 1 Client CURL Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 42
  • 121. Créons un index $ curl -XPUT localhost:9200/twitter -d '{ Cluster "index" : { "number_of_shards" : 2, Nœud 1 "number_of_replicas" : 1 Shard 0 } }' Shard 1 réplication non respectée Client CURL Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 42
  • 122. Créons un index $ curl -XPUT localhost:9200/twitter -d '{ Cluster "index" : { "number_of_shards" : 2, Nœud 1 Nœud 2 "number_of_replicas" : 1 Shard 0 Shard 0 } }' Shard 1 Shard 1 réplication respectée Client CURL Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 42
  • 123. Réallocation dynamique Cluster Nœud 1 Nœud 2 Shard 0 Shard 0 Shard 1 Shard 1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 43
  • 124. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Shard 0 Shard 0 Shard 1 Shard 1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 43
  • 125. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Shard 0 Shard 0 Shard 0 Shard 1 Shard 1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 44
  • 126. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Shard 0 Shard 0 Shard 1 Shard 1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 44
  • 127. Réallocation dynamique Cluster Nœud 1 Nœud 2 Nœud 3 Nœud 4 Shard 0 Shard 0 Shard 1 Shard 1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 44
  • 128. 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 1 Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 45
  • 129. 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, c'est trouver le bon équilibre entre le nombre de nodes, shards et replicas ! Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 45
  • 130. 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 #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ... }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 46
  • 131. 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 #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ... }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 47
  • 132. 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 #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ... }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 47
  • 133. 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 #devoxxfr", "created_at": "2012-04-06T20:45:36.000Z", "source": "Twitter for iPad", ... }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 48
  • 134. 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 à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 49
  • 135. 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 à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }' 50
  • 136. 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 à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 51
  • 137. 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 à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 51
  • 138. 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 à #devoxxfr", "created_at": "2012-04-06T21:12:52.000Z", "source": "Twitter for iPad", ... }' Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 52
  • 139. 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 CURL Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 53
  • 140. 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 CURL Moteur Elasticsearch Rivers Facets Demo Architecture Communauté 53

Editor's Notes

  1. Enthousiasme.\nRemerciements.\n
  2. Parcours :\n Ecole d&apos;ing&amp;#xE9; &amp;#xE0; Brest, \n puis 3 ans en SSII, \n 3 ans chez SFR/Cegetel r&amp;#xE9;seau de transmission (intranetisation du SI de supervision), \n 4 ans chez Vivendi Universal Net\n Depuis plus de 7 ans, je bosse pour la France &amp;#xE0; la douane pour le d&amp;#xE9;veloppement du SI, principalement\n D&amp;#xE9;claration de douane en ligne (12 millions de marchandises d&amp;#xE9;clar&amp;#xE9;s import/export par an)\n Projet de gestion des contr&amp;#xF4;les douanier\nPassions : \n Ma famille\n Mon job : j&apos;adore mon job\n Le mix occasionnel (sur mon compte twitter un lien vers mes podcasts)\nContacts :\n Twitter : dadoonet et animateur elasticsearchfr\n Email : david@pilato.fr\n
  3. Points abord&amp;#xE9;s :\nA quels besoins essaye t on de r&amp;#xE9;pondre ? A quoi servirait un moteur de recherche dans mon SI ?\nComment Elasticsearch r&amp;#xE9;pond &amp;#xE0; ces besoins et &amp;#xE0; bien d&apos;autres encore\nD&amp;#xE9;mo Live : indexation de messages Twitter ! Faites du bruit en twittant sur @devoxxfr et #elasticsearch\n
  4. Description de ma propre exp&amp;#xE9;rience en arrivant en douane il y a 7 ans par un cas type de la recherche SQL classique.\n
  5. \n
  6. \n
  7. \n
  8. Faire remarquer le like avec des wildcards sur le champ commentaire tr&amp;#xE8;s contre performant.\nTr&amp;#xE8;s contre performant. Jusqu&amp;#x2019;&amp;#xE0; 500 000 documents, on arrivait encore &amp;#xE0; tenir la charge avec des temps de r&amp;#xE9;ponse de moins de 5 secondes.\n
  9. Lorsqu&amp;#x2019;on a atteint le million de d&amp;#xE9;clarations en douane, obligation d&amp;#x2019;enlever la fonctionnalit&amp;#xE9; like pour faire seulement du &amp;#xE9;gal &amp;#xE0;.\n\n
  10. Parmi les moteurs existants, il y a depuis maintenant plus de 2 ans, Elasticsearch...\n
  11. Parmi les moteurs existants, il y a depuis maintenant plus de 2 ans, Elasticsearch...\n
  12. Parmi les moteurs existants, il y a depuis maintenant plus de 2 ans, Elasticsearch...\n
  13. Principe fondamental : Ce sont vos donn&amp;#xE9;es : ce sera votre recherche. Il n&apos;y a que vous qui puissiez savoir ce que s&amp;#xE9;mantiquement repr&amp;#xE9;sentent vos donn&amp;#xE9;es, comment les chercher et comment pr&amp;#xE9;senter les r&amp;#xE9;sultats de recherche.\n
  14. Principe fondamental : Ce sont vos donn&amp;#xE9;es : ce sera votre recherche. Il n&apos;y a que vous qui puissiez savoir ce que s&amp;#xE9;mantiquement repr&amp;#xE9;sentent vos donn&amp;#xE9;es, comment les chercher et comment pr&amp;#xE9;senter les r&amp;#xE9;sultats de recherche.\n
  15. Moteur clairement NOSQL de son orientation Document\nBas&amp;#xE9; sur la formidable biblioth&amp;#xE8;que Lucene dont il masque la complexit&amp;#xE9; Java via des services HTTP / REST / JSON standards. Voir aussi la conf&amp;#xE9;rence de vendredi &amp;#xE0; 14H30 la conf&amp;#xE9;rence de Majirus FANSI sur les fondements de Lucene.\nDe fait, s&apos;utilise &amp;#xE0; partir de n&apos;importe quelle technologie\nAjoute la couche cloud qui manquait &amp;#xE0; Lucene : distribution, partionnement, scalabilit&amp;#xE9; pour en d&amp;#xE9;cupler d&apos;avantage la puissance en autant d&amp;#x2019;instances de Lucene que n&amp;#xE9;cessaire. \n\n\n
  16. Moteur clairement NOSQL de son orientation Document\nBas&amp;#xE9; sur la formidable biblioth&amp;#xE8;que Lucene dont il masque la complexit&amp;#xE9; Java via des services HTTP / REST / JSON standards. Voir aussi la conf&amp;#xE9;rence de vendredi &amp;#xE0; 14H30 la conf&amp;#xE9;rence de Majirus FANSI sur les fondements de Lucene.\nDe fait, s&apos;utilise &amp;#xE0; partir de n&apos;importe quelle technologie\nAjoute la couche cloud qui manquait &amp;#xE0; Lucene : distribution, partionnement, scalabilit&amp;#xE9; pour en d&amp;#xE9;cupler d&apos;avantage la puissance en autant d&amp;#x2019;instances de Lucene que n&amp;#xE9;cessaire. \n\n\n
  17. Moteur clairement NOSQL de son orientation Document\nBas&amp;#xE9; sur la formidable biblioth&amp;#xE8;que Lucene dont il masque la complexit&amp;#xE9; Java via des services HTTP / REST / JSON standards. Voir aussi la conf&amp;#xE9;rence de vendredi &amp;#xE0; 14H30 la conf&amp;#xE9;rence de Majirus FANSI sur les fondements de Lucene.\nDe fait, s&apos;utilise &amp;#xE0; partir de n&apos;importe quelle technologie\nAjoute la couche cloud qui manquait &amp;#xE0; Lucene : distribution, partionnement, scalabilit&amp;#xE9; pour en d&amp;#xE9;cupler d&apos;avantage la puissance en autant d&amp;#x2019;instances de Lucene que n&amp;#xE9;cessaire. \n\n\n
  18. Moteur clairement NOSQL de son orientation Document\nBas&amp;#xE9; sur la formidable biblioth&amp;#xE8;que Lucene dont il masque la complexit&amp;#xE9; Java via des services HTTP / REST / JSON standards. Voir aussi la conf&amp;#xE9;rence de vendredi &amp;#xE0; 14H30 la conf&amp;#xE9;rence de Majirus FANSI sur les fondements de Lucene.\nDe fait, s&apos;utilise &amp;#xE0; partir de n&apos;importe quelle technologie\nAjoute la couche cloud qui manquait &amp;#xE0; Lucene : distribution, partionnement, scalabilit&amp;#xE9; pour en d&amp;#xE9;cupler d&apos;avantage la puissance en autant d&amp;#x2019;instances de Lucene que n&amp;#xE9;cessaire. \n\n\n
  19. Moteur clairement NOSQL de son orientation Document\nBas&amp;#xE9; sur la formidable biblioth&amp;#xE8;que Lucene dont il masque la complexit&amp;#xE9; Java via des services HTTP / REST / JSON standards. Voir aussi la conf&amp;#xE9;rence de vendredi &amp;#xE0; 14H30 la conf&amp;#xE9;rence de Majirus FANSI sur les fondements de Lucene.\nDe fait, s&apos;utilise &amp;#xE0; partir de n&apos;importe quelle technologie\nAjoute la couche cloud qui manquait &amp;#xE0; Lucene : distribution, partionnement, scalabilit&amp;#xE9; pour en d&amp;#xE9;cupler d&apos;avantage la puissance en autant d&amp;#x2019;instances de Lucene que n&amp;#xE9;cessaire. \n\n\n
  20. Moteur clairement NOSQL de son orientation Document\nBas&amp;#xE9; sur la formidable biblioth&amp;#xE8;que Lucene dont il masque la complexit&amp;#xE9; Java via des services HTTP / REST / JSON standards. Voir aussi la conf&amp;#xE9;rence de vendredi &amp;#xE0; 14H30 la conf&amp;#xE9;rence de Majirus FANSI sur les fondements de Lucene.\nDe fait, s&apos;utilise &amp;#xE0; partir de n&apos;importe quelle technologie\nAjoute la couche cloud qui manquait &amp;#xE0; Lucene : distribution, partionnement, scalabilit&amp;#xE9; pour en d&amp;#xE9;cupler d&apos;avantage la puissance en autant d&amp;#x2019;instances de Lucene que n&amp;#xE9;cessaire. \n\n\n
  21. Si je devais r&amp;#xE9;sumer ES en quatre mots :\nIl est simple. Just run ! Pas de conf compliqu&amp;#xE9;e &amp;#xE0; faire. Comme la pub apple il y a une dizaine (ou vingtaine) : &quot;1&amp;#xE8;re &amp;#xE9;tape : branchez, 2&amp;#xE8;me &amp;#xE9;tape, connectez, 3&amp;#xE8;me &amp;#xE9;tape ...... il n&apos;y a pas de troisi&amp;#xE8;me &amp;#xE9;tape !&quot;\nIl est efficace. On ajoute des n&amp;#x153;uds et on b&amp;#xE9;n&amp;#xE9;ficie imm&amp;#xE9;diatement de la r&amp;#xE9;plication et de l&apos;&amp;#xE9;quilibrage de charge.\nIl est puissant. Bas&amp;#xE9; sur Lucene, il parall&amp;#xE9;lise ses traitements pour d&amp;#xE9;cupler la puissance de Lucene.\nIl est complet. Beaucoup de fonctionnalit&amp;#xE9;s natives ou sous forme de plugins.\nOn va voir &amp;#xE7;a de fa&amp;#xE7;on un peu plus pr&amp;#xE9;cise maintenant&amp;#x2026;\n
  22. Si je devais r&amp;#xE9;sumer ES en quatre mots :\nIl est simple. Just run ! Pas de conf compliqu&amp;#xE9;e &amp;#xE0; faire. Comme la pub apple il y a une dizaine (ou vingtaine) : &quot;1&amp;#xE8;re &amp;#xE9;tape : branchez, 2&amp;#xE8;me &amp;#xE9;tape, connectez, 3&amp;#xE8;me &amp;#xE9;tape ...... il n&apos;y a pas de troisi&amp;#xE8;me &amp;#xE9;tape !&quot;\nIl est efficace. On ajoute des n&amp;#x153;uds et on b&amp;#xE9;n&amp;#xE9;ficie imm&amp;#xE9;diatement de la r&amp;#xE9;plication et de l&apos;&amp;#xE9;quilibrage de charge.\nIl est puissant. Bas&amp;#xE9; sur Lucene, il parall&amp;#xE9;lise ses traitements pour d&amp;#xE9;cupler la puissance de Lucene.\nIl est complet. Beaucoup de fonctionnalit&amp;#xE9;s natives ou sous forme de plugins.\nOn va voir &amp;#xE7;a de fa&amp;#xE7;on un peu plus pr&amp;#xE9;cise maintenant&amp;#x2026;\n
  23. Si je devais r&amp;#xE9;sumer ES en quatre mots :\nIl est simple. Just run ! Pas de conf compliqu&amp;#xE9;e &amp;#xE0; faire. Comme la pub apple il y a une dizaine (ou vingtaine) : &quot;1&amp;#xE8;re &amp;#xE9;tape : branchez, 2&amp;#xE8;me &amp;#xE9;tape, connectez, 3&amp;#xE8;me &amp;#xE9;tape ...... il n&apos;y a pas de troisi&amp;#xE8;me &amp;#xE9;tape !&quot;\nIl est efficace. On ajoute des n&amp;#x153;uds et on b&amp;#xE9;n&amp;#xE9;ficie imm&amp;#xE9;diatement de la r&amp;#xE9;plication et de l&apos;&amp;#xE9;quilibrage de charge.\nIl est puissant. Bas&amp;#xE9; sur Lucene, il parall&amp;#xE9;lise ses traitements pour d&amp;#xE9;cupler la puissance de Lucene.\nIl est complet. Beaucoup de fonctionnalit&amp;#xE9;s natives ou sous forme de plugins.\nOn va voir &amp;#xE7;a de fa&amp;#xE7;on un peu plus pr&amp;#xE9;cise maintenant&amp;#x2026;\n
  24. Si je devais r&amp;#xE9;sumer ES en quatre mots :\nIl est simple. Just run ! Pas de conf compliqu&amp;#xE9;e &amp;#xE0; faire. Comme la pub apple il y a une dizaine (ou vingtaine) : &quot;1&amp;#xE8;re &amp;#xE9;tape : branchez, 2&amp;#xE8;me &amp;#xE9;tape, connectez, 3&amp;#xE8;me &amp;#xE9;tape ...... il n&apos;y a pas de troisi&amp;#xE8;me &amp;#xE9;tape !&quot;\nIl est efficace. On ajoute des n&amp;#x153;uds et on b&amp;#xE9;n&amp;#xE9;ficie imm&amp;#xE9;diatement de la r&amp;#xE9;plication et de l&apos;&amp;#xE9;quilibrage de charge.\nIl est puissant. Bas&amp;#xE9; sur Lucene, il parall&amp;#xE9;lise ses traitements pour d&amp;#xE9;cupler la puissance de Lucene.\nIl est complet. Beaucoup de fonctionnalit&amp;#xE9;s natives ou sous forme de plugins.\nOn va voir &amp;#xE7;a de fa&amp;#xE7;on un peu plus pr&amp;#xE9;cise maintenant&amp;#x2026;\n
  25. Un Document au sens NoSQL (tout est JSON dans Elasticsearch)\nPenser DOCUMENT ! Et non penser &amp;#xE0; l&amp;#x2019;organisation technique de ces documents (jointures, donn&amp;#xE9;es de r&amp;#xE9;f&amp;#xE9;rence, ...).\nQUE CHERCHENT MES UTILISATEURS : \ndes produits ? \ndes logs des serveurs, \ndes forums ou des discussions dans des forums ?\n
  26. Un Document au sens NoSQL (tout est JSON dans Elasticsearch)\nPenser DOCUMENT ! Et non penser &amp;#xE0; l&amp;#x2019;organisation technique de ces documents (jointures, donn&amp;#xE9;es de r&amp;#xE9;f&amp;#xE9;rence, ...).\nQUE CHERCHENT MES UTILISATEURS : \ndes produits ? \ndes logs des serveurs, \ndes forums ou des discussions dans des forums ?\n
  27. Un Document au sens NoSQL (tout est JSON dans Elasticsearch)\nPenser DOCUMENT ! Et non penser &amp;#xE0; l&amp;#x2019;organisation technique de ces documents (jointures, donn&amp;#xE9;es de r&amp;#xE9;f&amp;#xE9;rence, ...).\nQUE CHERCHENT MES UTILISATEURS : \ndes produits ? \ndes logs des serveurs, \ndes forums ou des discussions dans des forums ?\n
  28. Un Document au sens NoSQL (tout est JSON dans Elasticsearch)\nPenser DOCUMENT ! Et non penser &amp;#xE0; l&amp;#x2019;organisation technique de ces documents (jointures, donn&amp;#xE9;es de r&amp;#xE9;f&amp;#xE9;rence, ...).\nQUE CHERCHENT MES UTILISATEURS : \ndes produits ? \ndes logs des serveurs, \ndes forums ou des discussions dans des forums ?\n
  29. Un Document au sens NoSQL (tout est JSON dans Elasticsearch)\nPenser DOCUMENT ! Et non penser &amp;#xE0; l&amp;#x2019;organisation technique de ces documents (jointures, donn&amp;#xE9;es de r&amp;#xE9;f&amp;#xE9;rence, ...).\nQUE CHERCHENT MES UTILISATEURS : \ndes produits ? \ndes logs des serveurs, \ndes forums ou des discussions dans des forums ?\n
  30. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  31. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  32. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  33. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  34. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  35. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  36. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  37. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  38. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  39. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  40. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  41. Maintenant que nous avons ces bases, commen&amp;#xE7;ons par indexer un document&amp;#x2026;\n\n
  42. On indexe notre TWEET. ES nous r&amp;#xE9;pond que c&apos;est OK. Il faut imaginer qu&amp;#x2019;on vient juste de d&amp;#xE9;marrer un noeud elasticsearch et qu&amp;#x2019;on n&amp;#x2019;a absolument rien configur&amp;#xE9;. La commande est juste un PUT en CURL.\nES cr&amp;#xE9;&amp;#xE9; l&amp;#x2019;index, le type et trouve tout seul le mapping correspondant &amp;#xE0; chaque champ. Des chaines de caract&amp;#xE8;res, des dates, des bool&amp;#xE9;ens, des nombres, des tableaux, des objets, ...\nVous pouvez d&amp;#xE9;finir votre propre mapping pour chaque champ ainsi que des propri&amp;#xE9;t&amp;#xE9;s d&amp;#x2019;indexation. Par exemple, vous pourriez indiquer &amp;#xE0; Elasticsearch que le champ text est &amp;#xE0; analyser en FRANCAIS et donc qu&amp;#x2019;il faut ignorer les mots comme un, une, le, la, ...\nParmi les mappings possibles, il existe aussi la possibilit&amp;#xE9; d&amp;#x2019;envoyer des documents PDF, oOo ou autres dans un champ texte en les encodant en BASE64. ES indexera alors automatiquement le contenu. Tr&amp;#xE8;s puissant.\n
  43. Un cas tr&amp;#xE8;s simple de recherche : en g&amp;#xE9;n&amp;#xE9;ral, on commence tous par l&amp;#xE0; !\nOn cherche le mot cl&amp;#xE9; elasticsearch\nES nous ram&amp;#xE8;ne un document JSON en retour qui contient :\nLe nb total de documents trouv&amp;#xE9;s\nUn tableau contenant les 10 premiers documents les plus pertinents avec pour chaque document :\n Ses coordonn&amp;#xE9;es (dans quel index, quel est le type et quel est l&apos;ID)\n Son score (autrement dit sa pertinence relative par rapport &amp;#xE0; d&apos;autres documents trouv&amp;#xE9;s)\n Et surtout : directement le source du document JSON que vous avez index&amp;#xE9; ! Pas besoin de retourner dans votre syst&amp;#xE8;me d&apos;information source pour afficher le r&amp;#xE9;sultat aux utilisateurs. Vous avez tout sous la main !\n
  44. Un cas tr&amp;#xE8;s simple de recherche : en g&amp;#xE9;n&amp;#xE9;ral, on commence tous par l&amp;#xE0; !\nOn cherche le mot cl&amp;#xE9; elasticsearch\nES nous ram&amp;#xE8;ne un document JSON en retour qui contient :\nLe nb total de documents trouv&amp;#xE9;s\nUn tableau contenant les 10 premiers documents les plus pertinents avec pour chaque document :\n Ses coordonn&amp;#xE9;es (dans quel index, quel est le type et quel est l&apos;ID)\n Son score (autrement dit sa pertinence relative par rapport &amp;#xE0; d&apos;autres documents trouv&amp;#xE9;s)\n Et surtout : directement le source du document JSON que vous avez index&amp;#xE9; ! Pas besoin de retourner dans votre syst&amp;#xE8;me d&apos;information source pour afficher le r&amp;#xE9;sultat aux utilisateurs. Vous avez tout sous la main !\n
  45. Un cas tr&amp;#xE8;s simple de recherche : en g&amp;#xE9;n&amp;#xE9;ral, on commence tous par l&amp;#xE0; !\nOn cherche le mot cl&amp;#xE9; elasticsearch\nES nous ram&amp;#xE8;ne un document JSON en retour qui contient :\nLe nb total de documents trouv&amp;#xE9;s\nUn tableau contenant les 10 premiers documents les plus pertinents avec pour chaque document :\n Ses coordonn&amp;#xE9;es (dans quel index, quel est le type et quel est l&apos;ID)\n Son score (autrement dit sa pertinence relative par rapport &amp;#xE0; d&apos;autres documents trouv&amp;#xE9;s)\n Et surtout : directement le source du document JSON que vous avez index&amp;#xE9; ! Pas besoin de retourner dans votre syst&amp;#xE8;me d&apos;information source pour afficher le r&amp;#xE9;sultat aux utilisateurs. Vous avez tout sous la main !\n
  46. Un cas tr&amp;#xE8;s simple de recherche : en g&amp;#xE9;n&amp;#xE9;ral, on commence tous par l&amp;#xE0; !\nOn cherche le mot cl&amp;#xE9; elasticsearch\nES nous ram&amp;#xE8;ne un document JSON en retour qui contient :\nLe nb total de documents trouv&amp;#xE9;s\nUn tableau contenant les 10 premiers documents les plus pertinents avec pour chaque document :\n Ses coordonn&amp;#xE9;es (dans quel index, quel est le type et quel est l&apos;ID)\n Son score (autrement dit sa pertinence relative par rapport &amp;#xE0; d&apos;autres documents trouv&amp;#xE9;s)\n Et surtout : directement le source du document JSON que vous avez index&amp;#xE9; ! Pas besoin de retourner dans votre syst&amp;#xE8;me d&apos;information source pour afficher le r&amp;#xE9;sultat aux utilisateurs. Vous avez tout sous la main !\n
  47. Un cas tr&amp;#xE8;s simple de recherche : en g&amp;#xE9;n&amp;#xE9;ral, on commence tous par l&amp;#xE0; !\nOn cherche le mot cl&amp;#xE9; elasticsearch\nES nous ram&amp;#xE8;ne un document JSON en retour qui contient :\nLe nb total de documents trouv&amp;#xE9;s\nUn tableau contenant les 10 premiers documents les plus pertinents avec pour chaque document :\n Ses coordonn&amp;#xE9;es (dans quel index, quel est le type et quel est l&apos;ID)\n Son score (autrement dit sa pertinence relative par rapport &amp;#xE0; d&apos;autres documents trouv&amp;#xE9;s)\n Et surtout : directement le source du document JSON que vous avez index&amp;#xE9; ! Pas besoin de retourner dans votre syst&amp;#xE8;me d&apos;information source pour afficher le r&amp;#xE9;sultat aux utilisateurs. Vous avez tout sous la main !\n
  48. Un cas tr&amp;#xE8;s simple de recherche : en g&amp;#xE9;n&amp;#xE9;ral, on commence tous par l&amp;#xE0; !\nOn cherche le mot cl&amp;#xE9; elasticsearch\nES nous ram&amp;#xE8;ne un document JSON en retour qui contient :\nLe nb total de documents trouv&amp;#xE9;s\nUn tableau contenant les 10 premiers documents les plus pertinents avec pour chaque document :\n Ses coordonn&amp;#xE9;es (dans quel index, quel est le type et quel est l&apos;ID)\n Son score (autrement dit sa pertinence relative par rapport &amp;#xE0; d&apos;autres documents trouv&amp;#xE9;s)\n Et surtout : directement le source du document JSON que vous avez index&amp;#xE9; ! Pas besoin de retourner dans votre syst&amp;#xE8;me d&apos;information source pour afficher le r&amp;#xE9;sultat aux utilisateurs. Vous avez tout sous la main !\n
  49. Un cas tr&amp;#xE8;s simple de recherche : en g&amp;#xE9;n&amp;#xE9;ral, on commence tous par l&amp;#xE0; !\nOn cherche le mot cl&amp;#xE9; elasticsearch\nES nous ram&amp;#xE8;ne un document JSON en retour qui contient :\nLe nb total de documents trouv&amp;#xE9;s\nUn tableau contenant les 10 premiers documents les plus pertinents avec pour chaque document :\n Ses coordonn&amp;#xE9;es (dans quel index, quel est le type et quel est l&apos;ID)\n Son score (autrement dit sa pertinence relative par rapport &amp;#xE0; d&apos;autres documents trouv&amp;#xE9;s)\n Et surtout : directement le source du document JSON que vous avez index&amp;#xE9; ! Pas besoin de retourner dans votre syst&amp;#xE8;me d&apos;information source pour afficher le r&amp;#xE9;sultat aux utilisateurs. Vous avez tout sous la main !\n
  50. Un cas tr&amp;#xE8;s simple de recherche : en g&amp;#xE9;n&amp;#xE9;ral, on commence tous par l&amp;#xE0; !\nOn cherche le mot cl&amp;#xE9; elasticsearch\nES nous ram&amp;#xE8;ne un document JSON en retour qui contient :\nLe nb total de documents trouv&amp;#xE9;s\nUn tableau contenant les 10 premiers documents les plus pertinents avec pour chaque document :\n Ses coordonn&amp;#xE9;es (dans quel index, quel est le type et quel est l&apos;ID)\n Son score (autrement dit sa pertinence relative par rapport &amp;#xE0; d&apos;autres documents trouv&amp;#xE9;s)\n Et surtout : directement le source du document JSON que vous avez index&amp;#xE9; ! Pas besoin de retourner dans votre syst&amp;#xE8;me d&apos;information source pour afficher le r&amp;#xE9;sultat aux utilisateurs. Vous avez tout sous la main !\n
  51. Il est possible &amp;#xE9;videmment de faire des recherches beaucoup plus complexes&amp;#x2026;\n
  52. Il est possible &amp;#xE9;videmment de faire des recherches beaucoup plus complexes&amp;#x2026;\n
  53. Il est possible &amp;#xE9;videmment de faire des recherches beaucoup plus complexes&amp;#x2026;\n
  54. Il est possible &amp;#xE9;videmment de faire des recherches beaucoup plus complexes&amp;#x2026;\n
  55. Il est possible &amp;#xE9;videmment de faire des recherches beaucoup plus complexes&amp;#x2026;\n
  56. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  57. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  58. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  59. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  60. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  61. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  62. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  63. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  64. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  65. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  66. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  67. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  68. Il existe pour cela le langage QueryDSL :\nMatch all : ram&amp;#xE8;ne tous les r&amp;#xE9;sultats de mon cluster, de mon index ou de mon type.\nQueryString : tr&amp;#xE8;s int&amp;#xE9;ressant pour passer des requ&amp;#xEA;tes type Lucene avec des + pour rendre obligatoire un terme ou &amp;#x2013; pour en exclure)\nTerm : recherche d&apos;un terme sans analyser le terme pass&amp;#xE9; en argument\nText : recherche d&apos;un texte qui sera analys&amp;#xE9; (donc les mots inutiles seront exclus)\nWildcard : joker\nBool : permet de combiner des crit&amp;#xE8;res : avec MUST : DOIT, MUST NOT : NE DOIT PAS, ou SHOULD : CA SERAIT BIEN SI IL Y &amp;#xC9;TAIT&amp;#x2026;\nRange : recherche dans un intervalle de valeurs (on l&apos;a vu avec les dates)\nPrefix : recherche de ce qui commence par : tr&amp;#xE8;s pratique pour l&apos;autocompletion car rapide en plus\nFiltered : on vient de le voir sur le slide d&apos;avant\nFuzzy like this : recherche par vraisemblance de termes. Il va prendre notre mot et en g&amp;#xE9;n&amp;#xE9;rer d&apos;autres ressemblants puis faire la recherche.\nMore like this : Dans l&apos;id&amp;#xE9;e, cela permet de trouver des documents ressemblants &amp;#xE0; d&apos;autres\n\nNous avons donc abord&amp;#xE9; jusqu&apos;&amp;#xE0; pr&amp;#xE9;sent : la cr&amp;#xE9;ation de documents, le mapping et la recherche.\nPour alimenter Elasticsearch, il faut aller puiser du contenu dans votre SI.\n\n\n
  69. Principe : propager un contenu en &amp;#xE9;volution permanente vers Elasticsearch\nL&apos;image est : &quot;les rivi&amp;#xE8;res de donn&amp;#xE9;es qui se d&amp;#xE9;versent dans le fleuve de la recherche&quot;\n\n
  70. Principe : propager un contenu en &amp;#xE9;volution permanente vers Elasticsearch\nL&apos;image est : &quot;les rivi&amp;#xE8;res de donn&amp;#xE9;es qui se d&amp;#xE9;versent dans le fleuve de la recherche&quot;\n\n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  80. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  81. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  82. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  83. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  84. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  85. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  86. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  87. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  88. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  89. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  90. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  91. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  92. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  93. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  94. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  95. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  96. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  97. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  98. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  99. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  100. Plus s&amp;#xE9;rieusement, aborde un des points que je pr&amp;#xE9;f&amp;#xE8;re de ES : l&amp;#x2019;analyse des donn&amp;#xE9;es en temps r&amp;#xE9;el\n
  101. Regarder ses donn&amp;#xE9;es sous un autre angle. Les pr&amp;#xE9;senter sous des facettes diff&amp;#xE9;rentes...\n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. Beaucoup d&amp;#x2019;autres type de facettes existent comme par exemple geodistance qui permet de calculer le nombre d&amp;#x2019;&amp;#xE9;l&amp;#xE9;ments autour de moi dans un rayon de 10, 20 ou 50 km\nUn syst&amp;#xE8;me tr&amp;#xE8;s puissant qu&amp;#x2019;on peut donc retrouver sur les sites marchands\n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  129. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  130. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  131. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  132. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  133. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  134. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  135. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  136. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  137. Fiche entreprise avec liste des contr&amp;#xF4;les douaniers\nDiff&amp;#xE9;rentes facettes et la liste des r&amp;#xE9;sultats en bas\nUn clic sur non conforme : ajout crit&amp;#xE8;re, relance recherche, c-a-d, nouveaux r&amp;#xE9;sultats et nouvelles facettes.\n
  138. Ici, on pourra observer que les 6 cas de fraude ont &amp;#xE9;t&amp;#xE9; trouv&amp;#xE9;s en d&amp;#xE9;cembre 2010, Janvier, Octobre 2011 et Mars 2012.\n
  139. Ici, on pourra observer que les 6 cas de fraude ont &amp;#xE9;t&amp;#xE9; trouv&amp;#xE9;s en d&amp;#xE9;cembre 2010, Janvier, Octobre 2011 et Mars 2012.\n
  140. Profite de l&amp;#x2019;indexation permanente de ES sans d&amp;#xE9;gradation des performances de la recherche\nPour pr&amp;#xE9;senter des r&amp;#xE9;sultats en temps presque r&amp;#xE9;el. D&amp;#xE9;mo twitter.\n\n
  141. Et nous allons v&amp;#xE9;rifier si nous (ou plut&amp;#xF4;t si VOUS) avez fait du bruit sur twitter&amp;#x2026;\n\n\n
  142. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  143. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  144. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  145. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  146. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  147. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  148. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  149. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  150. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  151. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  152. Vous avez donc twitt&amp;#xE9; &amp;#xE0; fond pendant toute cette conf&amp;#xE9;rence. Ces tweets sont h&amp;#xE9;berg&amp;#xE9;s chez Twitter qui met &amp;#xE0; notre disposition une API streaming qui permet d&apos;&amp;#xE9;couter en permanence le bruit de fond (the hoose).\nPour cela, j&apos;ai pris une machine chez Amazon sur laquelle j&apos;ai install&amp;#xE9; ES.\nJ&apos;ai ajout&amp;#xE9; le plugin twitter et j&apos;ai cr&amp;#xE9;&amp;#xE9; une rivi&amp;#xE8;re twitter qui &amp;#xE9;coute ce flux de tweets en filtrant sur le mot devoxxfr.\nAinsi depuis fin Mars, le contenu devoxxfr se d&amp;#xE9;verse dans Elasticsearch.\nIl suffit ensuite de r&amp;#xE9;aliser une petite application d&apos;analyse. J&apos;ai fait &amp;#xE7;a en jQuery.\n\n
  153. \n
  154. \n
  155. \n
  156. \n
  157. \n
  158. \n
  159. \n
  160. \n
  161. \n
  162. \n
  163. \n
  164. \n
  165. \n
  166. \n
  167. \n
  168. \n
  169. \n
  170. \n
  171. \n
  172. \n
  173. \n
  174. \n
  175. \n
  176. \n
  177. \n
  178. \n
  179. \n
  180. \n
  181. \n
  182. \n
  183. \n
  184. \n
  185. \n
  186. \n
  187. \n
  188. \n
  189. \n
  190. \n
  191. \n
  192. \n
  193. \n
  194. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  195. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  196. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  197. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  198. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  199. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  200. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  201. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  202. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  203. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  204. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  205. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  206. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  207. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  208. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  209. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  210. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  211. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  212. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  213. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  214. 50 contributeurs directs au projet. Plus de 2000 d&amp;#xE9;veloppeurs qui surveillent le projet sur github et il y a presque 300 forks. Spring ou Hibernate c&apos;est moins de 200 forks.\nPROD : Klout.com : 100 millions d&amp;#x2019;utilisateurs dans le monde pour lesquels ES fait le calcul des perks\nSonian : archivage et recherche de documents dans le cloud (plus de 20 clusters et plus de 5 milliards de documents index&amp;#xE9;s)\nYfrog : indexation des photos et vid&amp;#xE9;os pour twitter (3 millions de tweets par jour)\nhttp://elasticsearch-users.115913.n3.nabble.com/some-ES-stats-at-yfrog-com-td3759891.html\nDouane : Gestion des contr&amp;#xF4;les r&amp;#xE9;alis&amp;#xE9;s par les douaniers (500 000 documents index&amp;#xE9;s dont 50% de documents oOo, pdf, &amp;#x2026;). Moteur sur les d&amp;#xE9;clarations de douane est en cours : un volume de plus 100 millions de marchandises &amp;#xE0; traiter.\nRejoignez le mouvement ! Essayez et vous verrez &amp;#xE0; quel point c&amp;#x2019;est simple et efficace.\n\n
  215. \n
  216. \n
  217. \n