Cómo hacer la consulta anidada de Elasticsearch

Cómo hacer la consulta anidada de Elasticsearch
Puede realizar una consulta anidada en ElasticSearch utilizando el parámetro anidado. Una consulta anidada buscará los objetos de campo anidados y devolverá el padre raíz del documento si hay un objeto coincidente.

Cómo usar una consulta anidada

Para ejecutar una consulta anidada, debe tener un índice que incluya un mapeo anidado.

La siguiente consulta crea un índice con un mapeo de campo anidado.

Poner el índice anidado

"Mapeos":
"propiedades":
"clientes":
"tipo": "anidado"



A continuación, cree un documento que contenga tipos de campo anidados y algunos datos como se muestra en la consulta de muestra a continuación:

Poner anidado-índice/_doc/1

"Categoría": "Electronic_Purchase",
"clientes": [

"First_Name": "Barbra",
"Last_Name": "Walker"
,

"First_Name": "Michael",
"Last_Name": "Jean"
,

"First_Name": "Hannah",
"Last_Name": "Newsome"

]

Para ejecutar una consulta anidada, podemos ejecutar un ejemplo como el que se muestra a continuación:

Obtenga anidada-índice/_Search

"consulta":
"anidado":
"Path": "Clientes",
"consulta":
"Bool":
"debe": [
"fósforo":
"clientes.First_Name ":" Hannah "


]

,
"inner_hits": "resaltar": "campos": "clientes.nombre de pila":


Una respuesta de ejemplo de la consulta anterior está a continuación:

La consulta anidada utiliza parámetros como:

  1. Camino - El parámetro de ruta define la ruta al objeto anidado bajo el cual realizar la consulta de búsqueda. Se requiere este parámetro.
  2. Consulta - Este parámetro define la consulta de búsqueda para ejecutar en la ruta anidada proporcionada. Similar al parámetro de ruta, el parámetro de consulta no es opcional.
  3. Bool - La consulta booleana asegura que los documentos coincidan con la condición especificada. Cuando tiene la consulta booleana en Must, la cláusula establecida debe estar en el registro coincidente. Considere la documentación sobre la consulta booleana para obtener más información.
  4. Inner_hits - Esta devolución por búsqueda de búsqueda en la respuesta de la respuesta anidada. Acepta opciones como resaltado seguido del campo para resaltar.

Consultas anidadas de varios niveles

También puede tener consultas anidadas de nivel múltiple como se muestra en el índice de ejemplo:

Pon /usuarios

"Mapeos":
"propiedades":
"nombre de usuario":
"tipo": "anidado",
"propiedades":
"nombre de pila":
"teclee el texto"
,
"correo electrónico":
"tipo": "anidado",
"propiedades":
"proveedor":
"teclee el texto"
,
"Prefijo":
"teclee el texto"







Agregue algunos documentos con los datos como:

Poner/usuarios/_doc/1

"nombre de usuario":
"First_Name": "David",
"correo electrónico": [

"Proveedor": "Gmail.com ",
"Prefijo": "David123@"
,

"Proveedor": "Hotmail.com ",
"Prefijo": "Davidy123@"

]


Poner/usuarios/_doc/2

"nombre de usuario":
"First_Name": "Lucy",
"correo electrónico": [

"Proveedor": "Outlook.com ",
"Prefijo": "LucyMail@"
,

"Proveedor": "Protonmail.com ",
"Prefijo": "Lucyp@"

]

Para realizar una consulta anidada de varios niveles, ejecute la solicitud como:

Get /users /_Search

"consulta":
"anidado":
"Path": "Nombre de usuario",
"consulta":
"anidado":
"Path": "Nombre de usuario.correo electrónico",
"consulta":
"Bool":
"debe": [
"fósforo":
"nombre de usuario.correo electrónico.proveedor ":" Gmail.com "

]






Un ejemplo de la respuesta de la consulta resultante está a continuación:

Para concluir

Esta guía discute cómo ejecutar consultas anidadas anidadas y de varios niveles en Elasticsearch.