Elasticsearch

Transcription

Elasticsearch
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é
Ressources
Outils
●
●
●
Plugins (HQ, HEAD)
Extension Google Chrome (Sense)
Elastic stack (Elaticsearch, Logstash, Kibana)
https://www.elastic.co/guide/en/elasticsearch/reference/cu
rrent/_basic_concepts.html
https://www.elastic.co/guide/en/elasticsearch/guide/master
/index.html
http://docslide.us/presentations-publicspeaking/elasticsearch-at-dailymotion.html
https://qbox.io/blog/using-elasticsearch-percolation-in-thee-commerce-use-case
https://qbox.io/blog/optimizing-elasticsearch-how-manyshards-per-index