La puissance d’Elasticsearch
Oct 29

La puissance d’Elasticsearch

Elasticsearch, kesako

Elasticsearch est un outil performant qui vous permet de mettre en place un système de recherches complexes. Il s’agit d’une base de données open source NoSQL (donc ne permettant pas de relation telle que MySQL).

Elasticsearch expose une API REST et full JSON. La pertinence ainsi que la rapidité des résultats en font un atout majeur dans l’exploitation des données.

Elasticsearch en 3 étapes pour une utilisation optimale

Dans ce processus, il y a 3 étapes clés avant d’arriver à des résultats :

elasticsearch data nosql mysql thecodingmachine tcm

1. Modèle et 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 vos données, et de profiter 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. Il y a différents types qui sont proposés par Elasticsearch, notamment  :

  • `text` = une description d’un produit
  • `keyword` = un contenu structuré comme une adresse, un numéro d’identification, etc…
  • `date`
  • `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” `

Le typage permet d’effectuer des recherches très avancées.

2. Requête DSL (Domain Specific Language)

Pour requêter vos 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` et vous permet de rechercher avec plusieurs valeurs.
  • `prefix` : la requête renvoie les documents commençant par la valeur fournie.

Notion de Boolean Query = une requête qui permet la combinaison booléenne d’autres requêtes. Chaque combinaison possède au minimum une occurrence.

Il y a 4 types d’occurrence booléenne possibles :

  • `must` : opératon ET.
  • `must_not` : opération NON ET.
  • `should` : opération OU.
  • `filter` : comme le `must` mais le scoring sera ignoré.

Notion de Scoring = une technique permettant d’affecter un score à un document.

3. Résultats

Dans les résultats de vos recherches, il y a une notion de scoring vous permettant de réaliser des recherches par pertinence.

Conclusion :

Elasticsearch est un outil performant qui présente beaucoup de fonctionnalités et d’options, qui permet de traiter la création d’index.