Elasticsearch
Présentation
Un moteur de recherche
Objectifs
Pertinence des résultats
Performance
Alternatives
• Apache Solr (Ancienne génération, basé sur Lucene)
• Algolia (SaaS)
Présentation
Concepts clés d’Elasticsearch
● Architecture distribuée => haute disponibilité
● RESTful API / Documents JSON => developer-friendly
● Recherche full-text basée sur Apache Lucene => possibilités de recherche avancées
Terminologie
● Cluster : Définition logique de plus haut niveau d’un
ensemble organisé d’index répartis sur un ou plusieurs
nodes.
● Node : Instance (processus) d’elasticsearch. Un node
par machine.
● Shard : Instance de Lucene. Les shards sont distribués
sur les différents nodes.
● Replica : Chaque shard possède une copie.
● Index : Conteneur de données nommé. Configuration
d’un jeu de données et collection de documents.
● Type : Un ou plusieurs types sont définis par index.
Catégorie d’élément à indexer.
● Document : Donnée unitaire contenue dans un index.
Un document peut comprendre plusieurs champs.
● Field : Paire clé-valeur
● Mapping : Définition explicite ou implicite des
caractéristiques des champs à indexer.
Indexation
Analyzers
Character Filters (optionnel)
Traitement des chaînes de caractères avant de les passer
au tokenizer. Par exemple, convertir ‘&’ en ‘and’.
Tokenizer
Segmentation d’une chaîne de caractères.
Token Filters (optionnel)
Application de filtres sur les segments. Par exemple,
permet de supprimer des stopwords (de, au, aux, ...) ou
des élisions (l’, s’, n’, d’, ...).
Recherche
Principales queries
• Match_all Query => tous les documents
• Match Query => standard
• Multi_match Query => match sur de multiples champs
• Range Query => nombre / date entre deux valeurs
• Term Query => valeur exacte
• Terms Query => valeur exacte (plusieurs valeurs possibles)
Filtres
Utilisés pour inclure/exclure un résultat binaire.
Sur une recherche full-text ou pour chaque condition affectant le scoring, on utilise les clauses
Query, pour tout le reste on utilise les filtres.
Recherche
Function Score Query
Contrôle plus fin de la pertinence des résultats.
Exemple : Recherche de vidéo.
Score pondéré en fonction de la date et de la
popularité.
Possibilité de créer des scripts de scoring natifs
(java).
Recherche
Aggregations
Récupération d’un ensemble de statistiques
sur les éléments trouvés.
Metric (somme, minimum, maximum,
moyenne, …)
Bucketing (répartitions par termes, date,
valeur…)
Pipeline (expérimental)
Recherche
Autres features
Suggesters
Suggestion de termes, encore plus rapide qu’une recherche.
Highligthting
Permet de montrer les portions de texte matchant avec les termes recherchés.
Bulk operations
Opérations par lots : Index, create, delete or update.
Percolators
Recherche inversée. Stocker des requêtes afin de recevoir des notifications.
Communauté
Outils
● Plugins (HQ, HEAD)
● Extension Google Chrome (Sense)
● Elastic stack (Elaticsearch, Logstash, Kibana)
Ressources
https://www.elastic.co/guide/en/elasticsearch/reference/cu
rrent/_basic_concepts.html
https://www.elastic.co/guide/en/elasticsearch/guide/maste
r/index.html
http://docslide.us/presentations-public-
speaking/elasticsearch-at-dailymotion.html
https://qbox.io/blog/using-elasticsearch-percolation-in-the-
e-commerce-use-case
https://qbox.io/blog/optimizing-elasticsearch-how-many-
shards-per-index

Elasticsearch

  • 1.
  • 2.
    Présentation Un moteur derecherche Objectifs Pertinence des résultats Performance Alternatives • Apache Solr (Ancienne génération, basé sur Lucene) • Algolia (SaaS)
  • 3.
    Présentation Concepts clés d’Elasticsearch ●Architecture distribuée => haute disponibilité ● RESTful API / Documents JSON => developer-friendly ● Recherche full-text basée sur Apache Lucene => possibilités de recherche avancées
  • 4.
    Terminologie ● Cluster :Définition logique de plus haut niveau d’un ensemble organisé d’index répartis sur un ou plusieurs nodes. ● Node : Instance (processus) d’elasticsearch. Un node par machine. ● Shard : Instance de Lucene. Les shards sont distribués sur les différents nodes. ● Replica : Chaque shard possède une copie. ● Index : Conteneur de données nommé. Configuration d’un jeu de données et collection de documents. ● Type : Un ou plusieurs types sont définis par index. Catégorie d’élément à indexer. ● Document : Donnée unitaire contenue dans un index. Un document peut comprendre plusieurs champs. ● Field : Paire clé-valeur ● Mapping : Définition explicite ou implicite des caractéristiques des champs à indexer.
  • 5.
    Indexation Analyzers Character Filters (optionnel) Traitementdes chaînes de caractères avant de les passer au tokenizer. Par exemple, convertir ‘&’ en ‘and’. Tokenizer Segmentation d’une chaîne de caractères. Token Filters (optionnel) Application de filtres sur les segments. Par exemple, permet de supprimer des stopwords (de, au, aux, ...) ou des élisions (l’, s’, n’, d’, ...).
  • 6.
    Recherche Principales queries • Match_allQuery => tous les documents • Match Query => standard • Multi_match Query => match sur de multiples champs • Range Query => nombre / date entre deux valeurs • Term Query => valeur exacte • Terms Query => valeur exacte (plusieurs valeurs possibles) Filtres Utilisés pour inclure/exclure un résultat binaire. Sur une recherche full-text ou pour chaque condition affectant le scoring, on utilise les clauses Query, pour tout le reste on utilise les filtres.
  • 7.
    Recherche Function Score Query Contrôleplus fin de la pertinence des résultats. Exemple : Recherche de vidéo. Score pondéré en fonction de la date et de la popularité. Possibilité de créer des scripts de scoring natifs (java).
  • 8.
    Recherche Aggregations Récupération d’un ensemblede statistiques sur les éléments trouvés. Metric (somme, minimum, maximum, moyenne, …) Bucketing (répartitions par termes, date, valeur…) Pipeline (expérimental)
  • 9.
    Recherche Autres features Suggesters Suggestion determes, encore plus rapide qu’une recherche. Highligthting Permet de montrer les portions de texte matchant avec les termes recherchés. Bulk operations Opérations par lots : Index, create, delete or update. Percolators Recherche inversée. Stocker des requêtes afin de recevoir des notifications.
  • 10.
    Communauté Outils ● Plugins (HQ,HEAD) ● Extension Google Chrome (Sense) ● Elastic stack (Elaticsearch, Logstash, Kibana) Ressources https://www.elastic.co/guide/en/elasticsearch/reference/cu rrent/_basic_concepts.html https://www.elastic.co/guide/en/elasticsearch/guide/maste r/index.html http://docslide.us/presentations-public- speaking/elasticsearch-at-dailymotion.html https://qbox.io/blog/using-elasticsearch-percolation-in-the- e-commerce-use-case https://qbox.io/blog/optimizing-elasticsearch-how-many- shards-per-index