A repository of bitesize articles, tips & tricks
(in both English and French) curated by Mirego’s team.

Quelques astuces pour mieux comprendre les résultats de recherche d'Elasticsearch

J'ai récemment eu à investiguer pourquoi certains documents n'étaient pas présents dans la réponse d'une requête de recherche. Je n'étais pas trop familier avec les techniques de debugging, donc je documente pour la prochaine fois que quelqu'un aura quelque chose de similaire à faire!

Avec Elasticsearch ou OpenSearch, c'est possible d'aller très loin simplement via l'API REST. Par exemple, pour comprendre comment un document est représenté en tokens:

GET INDEX/_termvectors/DOC_ID
{
  "fields" : ["title"], # List des champs pour lesquels vous voulez l'information
  "offsets" : true,
  "payloads" : true,
  "positions" : true,
  "term_statistics" : true,
  "field_statistics" : true
}

va vous permettre de voir les informations présentes dans le document, leur fréquence, leur fréquence dans tous les documents de l'index, etc. Plus d'info ici

Une autre requête qui peut être utile lorsqu'on implémente un "custom tokenizer", c'est possible de lui envoyer des strings afin de vérifier comment il réagit.

GET INDEX/_analyze
{
  "tokenizer" : "custom_tokenizer",
  "filter" : [
    "asciifolding",
    "french_elision",
    "lowercase",
    "french_stop"
  ],
  "text" : "TEXTE À ANALYZER"
}

La réponse va contenir les informations qui seront utilisées pour indexer le texte pour la recherche. Ça permet donc de vérifier si les filtres fonctionnent bien comme prévu.