Vous débutez avec Elasticsearch ? Participez à notre webinaire Premiers pas avec Elasticsearch. Vous pouvez aussi démarrer un essai gratuit sur le cloud ou tester Elastic dès maintenant sur votre machine.
Le rôle d'un moteur de recherche est de renvoyer des résultats pertinents. Cependant, certains besoins professionnels vont au-delà, comme la mise en évidence des ventes, la priorité donnée aux produits saisonniers ou la présentation d'articles sponsorisés, et les développeurs ne peuvent pas toujours le faire dans la requête de recherche.
En outre, ces cas d'utilisation sont généralement sensibles au temps, et passer par les étapes de développement habituelles (créer une branche de code et attendre une nouvelle version) est un processus qui prend beaucoup de temps.
Et si nous pouvions réaliser l'ensemble de ce processus par un simple appel d'API ou, mieux encore, en quelques clics dans Kibana ?
Règles d'interrogation
Elasticsearch 8.10 a introduit les règles de requête et le récupérateur de règles. Il s'agit d'outils conçus pour injecter des résultats épinglés dans les requêtes sans affecter le classement des résultats organiques sur la base de règles. Ils ne font qu'ajouter une logique d'entreprise aux résultats d'une manière simple et déclarative.
Voici quelques exemples d'utilisation courante des règles de requête :
- Mise en évidence des annonces ou des ventes promues: Afficher les articles en vente ou sponsorisés en haut de la page.
- Exclusion en fonction du contexte ou de la géolocalisation: Masquer certains éléments lorsque la réglementation locale ne permet pas de les afficher.
- Donner la priorité aux résultats clés: Veiller à ce que les recherches populaires ou fixes soient toujours en tête, quel que soit le classement organique.
Pour accéder à l'interface et interagir avec ces outils, vous devez cliquer sur le menu latéral de Kibana et aller dans Règles de requête, sous Pertinence:

Lorsque le menu des règles de requête s'affiche, cliquez sur Créer votre premier jeu de règles :

Ensuite, vous devez nommer votre jeu de règles.

Le formulaire permettant de définir chaque règle comporte trois éléments clés :
- Critères: Les conditions qui doivent être remplies pour que la règle s'applique. Par exemple, "lorsque le champ query_string contient la valeur Christmas" ou "lorsque le champ country est CO".
- Action: C'est ce que vous voulez qu'il se passe lorsque les conditions sont remplies. Il peut être épinglé (fixation d'un document dans les premiers résultats) ou exclu (masquage d'un document).
- Métadonnées: Il s'agit des champs qui accompagnent la requête lors de son exécution. Elles peuvent inclure des informations sur l'utilisateur (comme la localisation ou la langue) ainsi que des données de recherche (query_string). Il s'agit des valeurs utilisées par les critères pour décider d'appliquer ou non une règle.
Exemple : articles populaires
Imaginons que nous ayons un site de commerce électronique proposant différents articles. En vérifiant les mesures, nous remarquons que l'un des articles les plus vendus dans la catégorie des consoles est la "manette sans fil DualShock 4", en particulier lorsque les utilisateurs recherchent les mots clés "PS4" ou "PlayStation 4". Nous décidons donc de placer ce produit en tête des résultats lorsqu'un utilisateur effectue une recherche avec ces mots-clés.
Tout d'abord, nous allons indexer les documents pour chaque article à l'aide d'une requête API en bloc :
Si nous n'intervenons pas dans la requête, l'article apparaît généralement en quatrième position. Voici la requête :
Et voici les résultats
Créons une règle de requête pour modifier cela. Tout d'abord, ajoutons-le au jeu de règles comme suit :

Ou demande d'API équivalente :
Pour utiliser l'ensemble de règles dans notre requête, nous devons utiliser un type de règle de requête. Ce type de requête se compose de deux parties principales :
- match_criteria: Il s'agit des métadonnées utilisées pour la comparaison avec la requête de l'utilisateur. Dans cet exemple, le jeu de règles est activé lorsque le champ query_string a la valeur "PlayStation 4".
- requête: la requête réelle qui sera utilisée pour effectuer la recherche et obtenir les résultats organiques.
De cette façon, vous exécutez d'abord la requête organique, puis Elasticsearch applique les règles de votre ensemble de règles :
Exemple : métadonnées basées sur l'utilisateur
Une autre application intéressante des règles d'interrogation consiste à utiliser les métadonnées pour afficher des documents spécifiques sur la base d'informations contextuelles provenant de l'utilisateur ou de la page web.
Par exemple, imaginons que nous souhaitions mettre en avant des articles ou des ventes personnalisées en fonction du niveau de fidélité d'un utilisateur, représenté par une valeur numérique.
Nous pouvons le faire en intégrant ces métadonnées directement dans la requête, de sorte que les règles s'activent lorsque la valeur en question répond à certains critères.
Tout d'abord, nous allons indexer un document que seuls les utilisateurs ayant un niveau de fidélité élevé peuvent consulter :
Maintenant, créons une nouvelle règle dans le même jeu de règles pour que lorsque le niveau de fidélité est égal ou supérieur à 80, l'article apparaisse en tête des résultats.

Enregistrez la règle et le jeu de règles.
Voici la requête REST équivalente :
Désormais, lors de l'exécution d'une requête, nous devons inclure le nouveau paramètre loyalty_level dans les métadonnées. Si la condition de la règle est remplie, le nouveau document apparaît en tête des résultats.
Par exemple, lors de l'envoi d'une requête dont le niveau de fidélité est 80 :
Nous verrons le document de fidélisation en haut des résultats :
Dans le cas ci-dessous, le niveau de fidélité étant de 70, la règle n'est pas respectée et l'objet ne doit pas apparaître en haut de la liste :
Voici les résultats :
Exemple : exclusion immédiate
Supposons que notre manette sans fil DualShock 4 (ID 2) soit temporairement indisponible et ne puisse être vendue. Ainsi, au lieu de supprimer manuellement le document ou d'attendre qu'un processus de données se mette en place, l'équipe commerciale décide de le supprimer des résultats de recherche en attendant.
Nous utiliserons un processus similaire à celui que nous venons d'appliquer aux articles populaires, mais cette fois-ci, au lieu de sélectionner Épinglé, nous choisirons Exclure. Cette règle fonctionne comme une sorte de liste noire. Changez les critères en Toujours pour que l'exclusion fonctionne à chaque fois que la requête est exécutée.
La règle devrait ressembler à ceci :

Enregistrez la règle et le jeu de règles pour appliquer les modifications. Voici la requête REST équivalente :
Maintenant, lorsque nous exécutons à nouveau la requête, vous verrez que l'élément ne figure plus dans les résultats, bien que la règle préalable soit de l'épingler. En effet, les exclusions ont la priorité sur les résultats de l'épinglage.
Conclusion
Les règles de requête permettent d'ajuster très facilement la pertinence sans modifier le code. La nouvelle interface utilisateur Kibana vous permet d'effectuer ces modifications en quelques secondes, ce qui vous donne, ainsi qu'à votre équipe commerciale, un meilleur contrôle sur vos résultats de recherche.
Au-delà du commerce électronique, les règles de requête peuvent servir à de nombreux autres scénarios : mise en évidence des guides de dépannage dans les portails d'assistance, mise en évidence des documents internes clés dans les bases de connaissances, promotion des dernières nouvelles dans les sites d'information ou filtrage des offres d'emploi ou des listes de contenu expirées. Ils peuvent même appliquer des règles de conformité, par exemple en masquant les documents à diffusion restreinte en fonction du rôle de l'utilisateur ou de la région.




