Ce didacticiel est conçu pour ElasticSearch version 5.2. La version 5 présente de nombreuses modifications importantes en termes de requêtes DSL et de mappage.
Si vous utilisez toujours la version 2.x, veuillez consulter la branche v2 de ce référentiel .
J'ai rassemblé de nombreux exemples pour présenter les fonctionnalités et la puissance d'ElasticSearch. Une grande partie des informations est basée sur "ElasticSearch, The Definitive Guide".
Téléchargez ElasticSearch et Kibana ici, puis suivez ces étapes simples :
./bin/elasticsearch
./bin/kibana
L'exercice 1 est très simple et le but est de maîtriser l'interface ElasticSearch RESTFul.
Sujets :
Exercice de charge 1
Dans l’exercice 2, nous indexerons un grand nombre de données. Pour améliorer les performances, nous faisons cela en masse.
Ces données contiennent des informations du blog Combell. J'ai indexé les informations suivantes :
Ces données seront utilisées dans les autres exercices.
Charger les données du blog en masse
Dans l'exercice 3, nous effectuons quelques requêtes de base à l'aide de la requête ElasticSearch DSL. Le DSL est basé sur JSON et les requêtes sont des recherches en texte intégral.
Voici quelques recherches que nous effectuons :
Exercice de charge 3
Dans l'exercice 4, nous allons nous concentrer sur l'analyse du texte intégral et du langage humain. Nous allons ignorer les capacités de base de données d'ElasticSearch, y ajouter du texte et voir comment il tokenise les données.
En fonction de l'analyseur que vous utilisez, ElasticSearch tokenisera et stockera les données d'une manière différente. Ne vous inquiétez pas, les données originales resteront dans la source du document, c'est l'index inversé qui change.
Exercice de charge 4
L'exercice 5 concerne le schéma d'un index. ElasticSearch est commercialisé comme étant sans schéma. En réalité, ElasticSearch devinera le schéma pour vous.
Je vais vous montrer des exemples où il devine avec succès et des exemples où il ne parvient pas.
Exercice de charge 5
Pour éviter qu'ElasticSearch ne devine mal le schéma, un mappage explicite est une bonne idée. L'exercice 6 configurera le bon mappage pour notre exemple de blog et réinsérera les données.
Les entiers et les chaînes seront définis en conséquence et la date aura le bon format.
La cartographie explicite sera utilisée dans l’exercice 7.
Exercice de charge 6
Les 2 recherches de l'exercice 5 qui ont échoué vont désormais être à nouveau exécutées. Grâce au mappage explicite, le résultat sera correct.
Exercice de charge 7
Dans l'exercice 8, nous définirons encore un autre mappage sur notre index de blog. Ce mappage traite uniquement le champ « titre » comme du texte intégral. Le reste des chaînes ne sera pas analysé ni tokenisé. Ils seront stockés "tels quels" .
Ces données seront utilisées dans l'exercice 9.
Exercice de charge 8
Dans l'exercice 9, je vais vous montrer la différence entre les recherches en texte intégral utilisant des requêtes et les correspondances de valeurs exactes utilisant des requêtes en mode filtre.
Le mappage effectué dans l'exercice 8 a permis de garantir qu'il existe désormais un champ « mot-clé » sur la propriété title. Cela signifie que les requêtes sur « title » sont traitées comme des recherches en texte intégral et que les filtres booléens sur le champ « title.keyword » standard sont traités comme des correspondances de valeurs exactes.
Dans l'un des exemples, je vais également vous montrer comment combiner plusieurs requêtes et filtres.
Voici ce que nous allons faire dans cet exercice :
Exercice de charge 9
Nous allons à nouveau remapper les données. Cette fois, nous traiterons la propriété « title » comme un champ analysé. Par défaut, l'analyseur "standard" est utilisé. Comme nos données sont à la fois en néerlandais et en anglais, j'ai ajouté 2 champs :
Il s'agit de la version finale de la cartographie. Les autres exemples utiliseront cette cartographie et ces données.
Exercice de charge 10
L'exercice 11 porte sur l'analyse du texte, en fonction de la langue. L'exercice 4 était une allusion à l'analyse des données. Nous allons maintenant effectuer des recherches qui dépendent de l'analyse linguistique.
Exercice de charge 11
Dans l'exercice 12, nous allons créer un nouvel index "villes" , qui contient toutes les villes situées dans la province de Flandre occidentale en Belgique. L'index stocke le nom de la ville et ses coordonnées géographiques.
La cartographie explicite et les données seront utilisées dans d'autres exercices.
Exercice de charge 12
Dans l'exercice précédent, nous avons créé un nouvel index et indexé certaines données géographiques. Dans l'exercice 13, nous effectuerons des recherches sur ces données.
2 requêtes seront présentées :
Exercice de charge 13
Dans l'exercice 14, nous chargerons les données dans un autre index. Cet index est appelé « voitures » et contient des informations sur les ventes de voitures. Chaque transaction conserve la trace des informations suivantes :
Ces informations seront utilisées dans l’exercice 15.
Exercice de charge 14
Les agrégations sont une fonctionnalité très puissante d'ElasticSearch. C'est fondamentalement comme "group by" dans SQL, mais bien plus puissant. Les agrégations sont la raison pour laquelle ElasticSearch est populaire dans la communauté du Big Data et de la science des données.
Voici les agrégations que nous allons exécuter dans cet exercice :
Exercice de charge 15