No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Consultas compuestas

10/16
Recursos

¿Qué son las consultas compuestas en Elastic Search?

Las consultas compuestas en Elastic Search permiten modelar situaciones complejas del mundo real al combinar varias condiciones en una única búsqueda. En estas consultas, se pueden integrar operadores lógicos como "y" (AND) y "o" (OR) para verificar múltiples valores al mismo tiempo. Comprender y utilizar estas consultas es fundamental para optimizar búsquedas más sofisticadas y precisas en grandes volúmenes de datos.

¿Cómo se estructura una consulta compuesta?

Para realizar una consulta compuesta, se utilizan las consultas booleanas, que funcionan como un envoltorio para incluir otras consultas dentro de ella. Por ejemplo, se puede crear una consulta que responda a las siguientes condiciones:

  • El estado del pedido es "activo" o "pendiente".
  • El usuario de la última modificación tiene un correo que contiene "mail" o "vendor.com".
  • El número de pedidos en la última hora es cero.

Todo esto se representa en Elastic Search de manera clara y estructurada, permitiendo un análisis eficiente de los datos.

  1. Consulta booleana padre: Es el punto de partida de cualquier consulta compuesta y contiene todas las sub-consultas.
  2. Must: Agrupa todas las consultas que necesitan cumplirse (logica "y").

Primer paso: Consulta booleana para el estado

Esta consulta comprueba si el estado de los pedidos es "activo" o "pendiente". Se implementa de la siguiente manera:

{
  "bool": {
    "should": [
      { "term": { "estado": "activo" } },
      { "term": { "estado": "pendiente" } }
    ]
  }
}

Segundo paso: Verificación de usuario

Se utiliza otra consulta booleana para verificar que el usuario de la última modificación tenga un correo que contenga "mail" o "vendor.com". Esto se representa como:

{
  "bool": {
    "should": [
      { "match": { "usuario": "mail" } },
      { "match": { "usuario": "vendor.com" } }
    ]
  }
}

Tercer paso: Comprobar pedidos en la última hora

Finalmente, se utiliza un término exacto (term) para buscar pedidos que en la última hora sean igual a cero:

{
  "term": { "pedidos_ultima_hora": 0 }
}

¿Cómo se integra todo en una sola consulta?

La consulta final en Elastic Search se une bajo una estructura común, comenzando con un bloque query seguido de bool, que contiene must para ser lógico "y". A continuación se detalla la estructura final de la consulta:

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              { "term": { "estado": "activo" } },
              { "term": { "estado": "pendiente" } }
            ]
          }
        },
        {
          "bool": {
            "should": [
              { "match": { "usuario": "mail" } },
              { "match": { "usuario": "vendor.com" } }
            ]
          }
        },
        {
          "term": { "pedidos_ultima_hora": 0 }
        }
      ]
    }
  }
}

Este código integra todos los criterios mencionados, permitiendo que Elastic Search realice búsquedas inmediatas y sofisticadas, basadas en condiciones múltiples. ¡No olvides practicar para dominar estas consultas y optimizar tus búsquedas en proyectos futuros!

Aportes 6

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para mi es todo un mundo nuevo, debo practicar y sacar provecho.

Me parece o es todo un tema esto de estructurar consultas en ES, no solo es tener la idea de los Y/O lógicos sino que hay que diseñar la query correctamente usando los must y should.

Vengo de trabajar más de dos años con solo SQL y me parece genial la forma de trabajar las condiciones con una base de datos NoSQL como ElasticSearch

![](https://static.platzi.com/media/user_upload/image-d103a1e5-528c-4ecf-8ffc-92f67ceacfb4.jpg)

Muy bien explicado el tema.