En este tema, aprenderemos cómo realizar filtrado y ordenación de datos en Elasticsearch. Estas técnicas son fundamentales para refinar los resultados de búsqueda y presentar la información de manera organizada y relevante.

Conceptos Clave

  1. Filtrado: Proceso de restringir los resultados de búsqueda a aquellos documentos que cumplen con ciertos criterios.
  2. Ordenación: Proceso de organizar los resultados de búsqueda en un orden específico, como alfabéticamente o por fecha.

Filtrado en Elasticsearch

El filtrado en Elasticsearch se realiza utilizando el Query DSL (Domain Specific Language). Los filtros son más eficientes que las consultas porque no afectan la puntuación de los documentos y pueden ser almacenados en caché.

Tipos de Filtros Comunes

  1. Term Filter: Filtra documentos que contienen un término exacto.
  2. Range Filter: Filtra documentos que contienen valores dentro de un rango específico.
  3. Exists Filter: Filtra documentos que contienen un campo específico.
  4. Bool Filter: Combina múltiples filtros utilizando operadores booleanos (must, should, must_not).

Ejemplo de Filtrado

Supongamos que tenemos un índice de productos y queremos filtrar los productos que tienen un precio entre 10 y 50 unidades monetarias.

GET /productos/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "precio": {
              "gte": 10,
              "lte": 50
            }
          }
        }
      ]
    }
  }
}

En este ejemplo:

  • Utilizamos una consulta bool con un filtro range para especificar el rango de precios.

Ordenación en Elasticsearch

La ordenación en Elasticsearch se realiza utilizando el parámetro sort en la consulta. Podemos ordenar los resultados por uno o más campos en orden ascendente (asc) o descendente (desc).

Ejemplo de Ordenación

Supongamos que queremos ordenar los productos por precio en orden ascendente.

GET /productos/_search
{
  "sort": [
    {
      "precio": {
        "order": "asc"
      }
    }
  ]
}

En este ejemplo:

  • Utilizamos el parámetro sort para ordenar los resultados por el campo precio en orden ascendente.

Ordenación Múltiple

Podemos ordenar por múltiples campos. Por ejemplo, primero por precio en orden ascendente y luego por nombre en orden descendente.

GET /productos/_search
{
  "sort": [
    {
      "precio": {
        "order": "asc"
      }
    },
    {
      "nombre": {
        "order": "desc"
      }
    }
  ]
}

Ejercicio Práctico

Ejercicio 1: Filtrado de Productos por Categoría

Objetivo: Filtrar los productos que pertenecen a la categoría "Electrónica".

Instrucciones:

  1. Crear una consulta que filtre los productos por la categoría "Electrónica".

Solución:

GET /productos/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "categoria": "Electrónica"
          }
        }
      ]
    }
  }
}

Ejercicio 2: Ordenación de Productos por Fecha de Creación

Objetivo: Ordenar los productos por la fecha de creación en orden descendente.

Instrucciones:

  1. Crear una consulta que ordene los productos por el campo fecha_creacion en orden descendente.

Solución:

GET /productos/_search
{
  "sort": [
    {
      "fecha_creacion": {
        "order": "desc"
      }
    }
  ]
}

Resumen

En esta sección, hemos aprendido cómo realizar filtrado y ordenación de datos en Elasticsearch. El filtrado nos permite restringir los resultados de búsqueda a documentos que cumplen con ciertos criterios, mientras que la ordenación nos permite organizar los resultados en un orden específico. Estas técnicas son esenciales para refinar y presentar los datos de manera efectiva.

En el próximo tema, exploraremos las agregaciones en Elasticsearch, que nos permitirán realizar análisis y resúmenes de datos más avanzados.

© Copyright 2024. Todos los derechos reservados