Elasticsearch Query DSL (Domain Specific Language) es un lenguaje específico de dominio que permite construir consultas complejas y potentes para buscar y analizar datos en Elasticsearch. Este módulo te guiará a través de los conceptos básicos y avanzados de Query DSL, proporcionando ejemplos prácticos y ejercicios para reforzar tu comprensión.

Contenido

Introducción a Query DSL

Query DSL es una herramienta poderosa que permite a los usuarios de Elasticsearch realizar búsquedas detalladas y específicas. Utiliza una estructura JSON para definir las consultas, lo que facilita la lectura y escritura de las mismas.

Ventajas de Query DSL

  • Flexibilidad: Permite construir consultas complejas combinando diferentes tipos de consultas.
  • Potencia: Soporta búsquedas de texto completo, filtros, agregaciones y más.
  • Legibilidad: La estructura JSON es fácil de leer y entender.

Estructura de una Consulta

Una consulta en Query DSL se compone de varios elementos clave. Aquí hay un ejemplo básico de una consulta:

{
  "query": {
    "match": {
      "field_name": "search_text"
    }
  }
}

Desglose del Ejemplo

  • query: El objeto principal que contiene la consulta.
  • match: Un tipo de consulta que busca coincidencias en un campo específico.
  • field_name: El nombre del campo en el que se busca.
  • search_text: El texto que se busca en el campo especificado.

Consultas de Coincidencia

Las consultas de coincidencia son fundamentales en Elasticsearch. Aquí hay algunos tipos comunes:

Consulta Match

Busca documentos que coincidan con el texto proporcionado en un campo específico.

{
  "query": {
    "match": {
      "title": "Elasticsearch"
    }
  }
}

Consulta Multi-Match

Busca en múltiples campos al mismo tiempo.

{
  "query": {
    "multi_match": {
      "query": "Elasticsearch",
      "fields": ["title", "description"]
    }
  }
}

Consulta Match Phrase

Busca una frase exacta en un campo.

{
  "query": {
    "match_phrase": {
      "title": "Elasticsearch tutorial"
    }
  }
}

Consultas de Filtro

Las consultas de filtro se utilizan para restringir los resultados de búsqueda sin afectar la puntuación de relevancia.

Consulta Term

Busca documentos que contengan un término exacto en un campo.

{
  "query": {
    "term": {
      "status": "active"
    }
  }
}

Consulta Range

Busca documentos con valores dentro de un rango específico.

{
  "query": {
    "range": {
      "age": {
        "gte": 30,
        "lte": 40
      }
    }
  }
}

Consultas Compuestas

Las consultas compuestas combinan múltiples consultas para crear búsquedas más complejas.

Consulta Bool

Combina varias consultas con operadores booleanos (must, should, must_not).

{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "Elasticsearch" } }
      ],
      "filter": [
        { "term": { "status": "active" } }
      ]
    }
  }
}

Consulta Boosting

Aumenta o disminuye la relevancia de ciertos documentos.

{
  "query": {
    "boosting": {
      "positive": {
        "match": {
          "description": "Elasticsearch"
        }
      },
      "negative": {
        "term": {
          "status": "inactive"
        }
      },
      "negative_boost": 0.5
    }
  }
}

Ejercicios Prácticos

Ejercicio 1: Consulta Match

Crea una consulta que busque documentos donde el campo "content" contenga la palabra "Elasticsearch".

{
  "query": {
    "match": {
      "content": "Elasticsearch"
    }
  }
}

Ejercicio 2: Consulta Range

Crea una consulta que busque documentos donde el campo "price" esté entre 10 y 50.

{
  "query": {
    "range": {
      "price": {
        "gte": 10,
        "lte": 50
      }
    }
  }
}

Ejercicio 3: Consulta Bool

Crea una consulta que busque documentos donde el campo "category" sea "books" y el campo "status" sea "available".

{
  "query": {
    "bool": {
      "must": [
        { "term": { "category": "books" } }
      ],
      "filter": [
        { "term": { "status": "available" } }
      ]
    }
  }
}

Conclusión

En este módulo, hemos explorado los fundamentos de Elasticsearch Query DSL, incluyendo la estructura de las consultas, consultas de coincidencia, consultas de filtro y consultas compuestas. Con estos conocimientos, estás preparado para construir consultas más complejas y específicas en Elasticsearch. En el próximo módulo, profundizaremos en técnicas avanzadas de búsqueda para mejorar aún más tus habilidades.

© Copyright 2024. Todos los derechos reservados