Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

Fondamentaux
      Elasticsearch
Concept
  • Basé sur Apache Lucène
  • Moteur de recherche distribué
  • Indexation complète
  • Architecture hautement évolutive
  • API REST
-> Puissance de Lucène
-> Mais facilité d'utilisation
-> Distribué et très évolutif
Cluster : Ensemble de nœuds répondant aux mêmes requêtes
Nœud : Machine physique hébergeant une instance Elasticsearch. Dans un cluster, le nœud master gère l'assignation des tâches à l'ensemble des nœuds.
Index : Espace logique permettant d'organiser les données
Shard : Instance Lucène stockant réellement les données
Replica : Copie d'un index
Alias : Index virtuel pointant vers 1 ou plusieurs index réels
Vocabulaire
Vocabulaire
Peut-être avec un dessin ?
Vocabulaire
Et concrètement ça donne quoi ?
Alimenter un index
curl -XPUT 'http://localhost:9200/index/type/id' -d' {
     "champ1" : "titi",
     "champ2" : "titi est parti",
     "numero" : 325,
     "trucs_multiples" : [
          "truc 1",
          "bidule 1"
     ]
}'
Requêter un index
curl -XGET 'http://localhost:9200/index/type/id'
curl -XGET 'http://localhost:9200/index/_search' -d'
{
     "query": {
          "match": {
               "champ2": "titi"
          }
     }
}
'
{
     "took" : 1,
     "timed_out" : false,
     "_shards" : {
          "total" : 1,
          "successful" : 1,
          "failed" : 0
     },
     "hits" : {
          "total" : 1,
          "max_score" : 0.15342641,
          "hits" : [{
               "_index" : "index",
               "_type" : "type",
               "_id" : "id",
               "_score" : 0.15342641,
               "_source" : {
                    "champ1" : "titi",
                    "champ2" : "titi est parti",
                    "numero" : 325,
                    "trucs_multiples" : [
                         "truc 1",
                         "bidule 1"
                    ]
               }
          }]
     }
}
Requêter un index
Pour aller un peu plus loin
Différence query/filter
FILTER : Permet de limiter les enregistrements traités (tout ou rien)

QUERY : Permet de calculer le score des enregistrements afin de
retourner les plus probants

Les différents types de Query permettent d'ajuster le score et donc les
éléments retournés


Les analyseurs permettent de modifier l'indexation des chaines de caractères
Agrégation
  • Décomptes des résultats par critères sans préjuger des valeurs présentes
  • Remplace les facets utilisés dans les versions précédentes
  • Utilisé pour filtrer sur les sites commerciaux
GET ldap/_search
{
  "size": 0,
  "query": {
    "match_all": {}
  },
  "aggs": {
    "Affiliation": {
      "terms": {
        "field": "eduPersonPrimaryAffiliation.raw",
        "size": 100
      }
    }
  }
}
   ...,
   "aggregations": {
      "Affiliation": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 0,
         "buckets": [
            {
               "key": "student",
               "doc_count": 76235
            },
            {
               "key": "teacher",
               "doc_count": 5214
            },
           ....

Use a spacebar or arrow keys to navigate