Comment faire une requête imbriquée Elasticsearch

Comment faire une requête imbriquée Elasticsearch
Vous pouvez effectuer une requête imbriquée dans Elasticsearch en utilisant le paramètre imbriqué. Une requête imbriquée fouillera les objets de champ imbriqués et renverra le parent racine du document s'il y a un objet correspondant.

Comment utiliser une requête imbriquée

Pour exécuter une requête imbriquée, vous devez avoir un index qui comprend une cartographie imbriquée.

La requête suivante crée un index avec une cartographie de champ imbriquée.

Mettre des index imbriqués

"Mappings":
"propriétés":
"clients":
"Type": "imbriqué"



Ensuite, créez un document contenant des types de champs imbriqués et certaines données comme indiqué dans l'exemple de requête ci-dessous:

Posé Index niché / _doc / 1

"Catégorie": "Electronic_purchases",
"clients": [

"First_name": "Barbra",
"Last_name": "Walker"
,

"First_name": "Michael",
"Last_name": "Jean"
,

"First_name": "Hannah",
"Last_name": "Newsome"

]]

Pour exécuter une requête imbriquée, nous pouvons exécuter un exemple comme celui ci-dessous:

Obtenez un index niché / _Search

"mettre en doute":
"imbriqué":
"chemin": "clients",
"mettre en doute":
"bool":
"devoir": [
"correspondre":
"clients.First_name ":" Hannah "


]]

,
"inner_hits": "highlight": "fields": "Clients.prénom":


Un exemple de réponse de la requête ci-dessus est ci-dessous:

La requête imbriquée utilise des paramètres comme:

  1. Chemin - Le paramètre de chemin définit le chemin d'accès à l'objet imbriqué sous lequel effectuer la requête de recherche. Ce paramètre est requis.
  2. Mettre en doute - Ce paramètre définit la requête de recherche à exécuter sur le chemin imbriqué fourni. Semblable au paramètre de chemin, le paramètre de requête n'est pas optionnel.
  3. Bool - La requête booléenne garantit que les documents correspondent à la condition spécifiée. Lorsque vous avez la requête booléenne définie sur MUST, la clause définie doit être dans l'enregistrement correspondant. Considérez la documentation sur la requête booléenne pour en savoir plus.
  4. Inner_hits - Ce renvoie par recherche frappé dans la réponse de la réponse imbriquée. Il accepte des options telles que Highlight suivie du terrain pour mettre en évidence.

Requêtes imbriquées à plusieurs niveaux

Vous pouvez également avoir des requêtes imbriquées à plusieurs niveaux comme indiqué dans l'exemple d'index:

Mettre / utilisateurs

"Mappings":
"propriétés":
"nom d'utilisateur":
"Type": "imbriqué",
"propriétés":
"prénom":
"type": "texte"
,
"e-mail":
"Type": "imbriqué",
"propriétés":
"fournisseur":
"type": "texte"
,
"préfixe":
"type": "texte"







Ajoutez quelques documents avec les données comme:

Put / utilisateurs / _doc / 1

"nom d'utilisateur":
"First_name": "David",
"e-mail": [

"Fournisseur": "Gmail.com ",
"préfixe": "david123 @"
,

"Fournisseur": "Hotmail.com ",
"préfixe": "Davidy123 @"

]]


Mettre / utilisateurs / _doc / 2

"nom d'utilisateur":
"First_name": "Lucy",
"e-mail": [

"fournisseur": "Outlook.com ",
"Préfixe": "LucyMail @"
,

"Fournisseur": "ProtonMail.com ",
"préfixe": "Lucyp @"

]]

Pour effectuer une requête imbriquée à plusieurs niveaux, exécutez la demande comme:

Get / Users / _Search

"mettre en doute":
"imbriqué":
"chemin": "nom d'utilisateur",
"mettre en doute":
"imbriqué":
"Path": "Nom d'utilisateur.e-mail",
"mettre en doute":
"bool":
"devoir": [
"correspondre":
"nom d'utilisateur.e-mail.fournisseur ":" Gmail.com "

]]






Un exemple de la réponse de la requête résultante est ci-dessous:

De clôture

Ce guide explique comment exécuter des requêtes imbriquées imbriquées et à plusieurs niveaux dans Elasticsearch.