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