Elasticsearch : 3 étapes pour une utilisation optimale

Elasticsearch est une base de données NoSQL particulièrement performante pour mettre en place un système de recherches complexes.

Un atout majeur dans l’exploitation des données, mais encore faut-il savoir l’utiliser !


Elasticsearch, qu’est-ce que c’est ?

Définition

Elasticsearch est un outil performant qui permet de mettre en place un système de recherches complexes. Il permet de stocker une grande quantité de documents, de les indexer et les exploiter en temps. Il s’agit d’une base de données open source NoSQL qui n’utilise donc pas des données relationnelles comme MySQL.
Elasticsearch propose une API REST et utilise des documents JSON, ce qui permet d’obtenir des résultats pertinents et rapides aux diverses requêtes effectuées : un atout majeur dans l’exploitation des données.

Lexique

  • Nœud : un processus Elasticsearch en cours d’exécution.
  • Cluster : un composé d’un ou de plusieurs nœuds.
  • Index : un espace de logique de stockage de documents de même type, représentant l’ensemble de vos données.
  • Lucene : une bibliothèque Open Source qui permet d’indexer et de rechercher du texte. Le moteur d’Elasticsearch.
  • Shard : une partition de l’index qui correspond à une instance de Lucene. Attention, il n’est pas possible de modifier le nombre de shards après leur création.
  • Document : un enregistrement dans un shard Elasticsearch.

Utiliser Elasticsearch : les 3 étapes essentielles

Pour bénéficier des avantages de l’utilisation d’Elasticsearch, il est indispensable de passer par 3 étapes clés.


1. La création d’un modèle et l’indexation

Pour pouvoir profiter des performances d’Elasticsearch, vous devez élaborer une stratégie d’indexation. Cela implique une création d’un ou plusieurs modèles (appelés mappings) qui vous permettront d’indexer toutes vos données et de profiter ainsi au mieux de votre futur moteur de recherche.

Attention : si vous passez à côté de cette étape, votre utilisation d’Elasticsearch ne sera plus pertinente.

Dans votre mapping, vous devez typer vos champs. Par défaut, Elasticsearch propose différents types, parmi lesquels :

  • text = une description d’un produit
  • keyword = un contenu structuré comme une adresse ou un numéro d’identification
  • nested = un type permettant de créer des objets dans des objets
  • numeric = les types numériques peuvent être « long », « double », « float »…
  • boolean = valeurs booléennes « false » et « true » ou une chaîne de caractère « false » ou « true ».

Ce typage des données va permettre d’effectuer des recherches très avancées, plus précises et complètes.


2. La requête DSL, Domain Specific Language

Pour rechercher des données dans Elasticsearch, l’outil vous propose d’utiliser un langage spécifique basé sur du JSON.
Les requêtes les plus courantes sont :

  • match : la requête renvoie les documents contenant des termes similaires au terme recherché, mesurés par une distance de Levenshtein.
  • term : la requête envoie les documents contenant un terme exact dans un champs fourni. Vous pouvez utiliser requête « term » pour rechercher des documents en fonction d’une valeur précise, telle qu’un prix, un ID de produit ou un nom d’utilisateur.
  • terms : elle est semblable à une requête « term », mais elle vous permet de faire une recherche avec plusieurs valeurs.
  • prefix : la requête renvoie les documents commençant par la valeur fournie.
  • Boolean Query ou requête boléenne : ce type de requête permet une combinaison de plusieurs requêtes. Chaque combinaison possède au minimum une occurrence parmi les 4 types d’occurrence booléenne possibles, à savoir : « must » : opération ET, « must_not » : opération NON ET, « should » : opération OU, « filter » : comme le « must » mais le scoring sera ignoré.
  • Scoring : cette technique permet d’affecter un score à un document.

3. Les résultats des recherches

Pour chaque document issu de la recherche Elasticsearch, un score est calculé. Celui-ci permet d’évaluer la pertinence du document et ainsi d’ordonner les résultats obtenus.

La pertinence des résultats dépend toutefois des paramètres de recherche et d’indexation définis. Pour cela, ElasticSearch va s’appuyer sur différents critères tels que la fréquence du terme recherché dans le document.


Pour en savoir plus sur les bases de données, les langages de programmation et les dernières évolutions des technologies, découvrez le blog technique de The Coding Machine.


par TheCodingMachine

Articles similaires TAG