Consultas Anidadas en Elastic Search: Creación y Ejemplos Prácticos

Clase 12 de 16Curso 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.

  1. Creación del modelo de restaurantes:
    • Realiza una petición PUT en Elasticsearch hacia el índice llamado restaurantes.
    • Define las propiedades dentro del cuerpo de la consulta utilizando JSON.
{
  "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.

  1. Inserción de restaurantes:
    • Usa nuevamente Peticiones PUT para añadir documentos al índice restaurantes.
    • Cada restaurante tendrá diferentes categorías con propiedades como nombre y si es categoría principal.
// 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.

  1. Realización de consultas:
    • Haz una consulta search sobre el índice de restaurantes.
    • Usa el tipo de consulta nested para poder buscar sobre campos anidados, en este caso, las categorías.
{
  "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.

  1. Consulta con múltiples criterios:
    • Añade más condiciones dentro de una lista de must dentro del bloque de consulta booleana.
{
  "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!