Consultas Anidadas en Elastic Search: Creación y Ejemplos Prácticos
Clase 12 de 16 • Curso de Introducción a Elasticsearch
Resumen
¿Cómo funcionan las consultas anidadas en Elasticsearch?
Cuando hablamos de consultas anidadas en Elasticsearch, nos referimos a consultas que permiten trabajar con documentos que contienen listas de objetos, creando una relación de pertenencia
. Esto significa que los objetos guardados pertenecen al documento que los alberga. Al hacer una búsqueda, aunque se encuentre una coincidencia en uno de esos objetos, no se devuelve solamente el objeto, sino todo el documento padre.
¿Cómo crear un modelo anidado?
Para entender mejor cómo funcionan las consultas anidadas, vamos a crear un modelo de restaurantes utilizando Postman. Este modelo representa el mapeo de un documento en Elasticsearch.
- Creación del modelo de restaurantes:
- Realiza una petición
PUT
en Elasticsearch hacia el índice llamadorestaurantes
. - Define las propiedades dentro del cuerpo de la consulta utilizando JSON.
- Realiza una petición
{
"mappings": {
"properties": {
"nombre": {
"type": "text"
},
"categorias": {
"type": "nested",
"properties": {
"nombre": {
"type": "keyword"
},
"principal": {
"type": "boolean"
}
}
}
}
}
}
¿Cómo insertar datos en el modelo?
Ahora que tenemos el modelo listo, es momento de insertar datos de ejemplo que nos permitirán realizar pruebas de consultas anidadas.
- Inserción de restaurantes:
- Usa nuevamente Peticiones
PUT
para añadir documentos al índicerestaurantes
. - Cada restaurante tendrá diferentes categorías con propiedades como
nombre
y si es categoríaprincipal
.
- Usa nuevamente Peticiones
// Restaurantes Ejemplo
{
"nombre": "McDonald's",
"categorias": [
{
"nombre": "comida rápida",
"principal": true
},
{
"nombre": "desayunos",
"principal": false
},
{
"nombre": "hamburguesas",
"principal": false
}
]
}
¿Cómo realizar consultas anidadas?
Con los restaurantes configurados, procedemos a realizar consultas anidadas.
- Realización de consultas:
- Haz una consulta
search
sobre el índice derestaurantes
. - Usa el tipo de consulta
nested
para poder buscar sobre campos anidados, en este caso, lascategorías
.
- Haz una consulta
{
"query": {
"nested": {
"path": "categorias",
"query": {
"bool": {
"must": [
{
"term": {
"categorias.nombre": "comida saludable"
}
}
]
}
}
}
}
}
¿Cómo utilizar múltiples condiciones?
Para hacer una búsqueda más compleja, se pueden combinar criterios en la consulta.
- Consulta con múltiples criterios:
- Añade más condiciones dentro de una lista de
must
dentro del bloque de consulta booleana.
- Añade más condiciones dentro de una lista de
{
"query": {
"nested": {
"path": "categorias",
"query": {
"bool": {
"must": [
{
"term": {
"categorias.nombre": "comida rápida"
}
},
{
"term": {
"categorias.principal": true
}
}
]
}
}
}
}
}
Estas consultas te permiten filtrar documentos que no solo tengan un valor específico, sino que también cumplan con otras condiciones adicionales, creando una búsqueda más precisa y efectiva. Aprovecha el potencial de Elastic Search para optimizar tus búsquedas y sigue explorando sus capacidades para obtener insights valiosos de tus datos. ¡El viaje recién comienza!