Las agregaciones en Elasticsearch son una poderosa herramienta para analizar y resumir datos. Permiten realizar cálculos y obtener estadísticas sobre los documentos indexados, lo que es esencial para obtener insights y tomar decisiones basadas en datos. En este tema, exploraremos los conceptos básicos de las agregaciones, los diferentes tipos de agregaciones disponibles y cómo utilizarlas en tus consultas.
Conceptos Básicos de Agregaciones
Las agregaciones en Elasticsearch se pueden dividir en dos categorías principales:
- Agregaciones de Matriz (Bucket Aggregations): Agrupan documentos en "buckets" (cubos) basados en ciertos criterios.
- Agregaciones de Métricas (Metric Aggregations): Calculan métricas sobre los documentos agrupados.
Estructura de una Consulta de Agregación
Una consulta de agregación en Elasticsearch se estructura de la siguiente manera:
{ "aggs": { "nombre_de_la_agregacion": { "tipo_de_agregacion": { "campo": "nombre_del_campo" } } } }
Tipos de Agregaciones
Agregaciones de Matriz
-
Agregación de Términos (Terms Aggregation): Agrupa documentos que contienen el mismo valor en un campo específico.
{ "aggs": { "popular_colors": { "terms": { "field": "color" } } } }
-
Agregación de Rango (Range Aggregation): Agrupa documentos en rangos definidos.
{ "aggs": { "price_ranges": { "range": { "field": "price", "ranges": [ { "to": 50 }, { "from": 50, "to": 100 }, { "from": 100 } ] } } } }
-
Agregación de Histograma (Histogram Aggregation): Agrupa documentos en intervalos de valores numéricos.
{ "aggs": { "price_histogram": { "histogram": { "field": "price", "interval": 50 } } } }
Agregaciones de Métricas
-
Agregación de Promedio (Avg Aggregation): Calcula el promedio de un campo numérico.
{ "aggs": { "average_price": { "avg": { "field": "price" } } } }
-
Agregación de Suma (Sum Aggregation): Calcula la suma de un campo numérico.
{ "aggs": { "total_sales": { "sum": { "field": "sales" } } } }
-
Agregación de Máximo (Max Aggregation): Encuentra el valor máximo de un campo numérico.
{ "aggs": { "max_price": { "max": { "field": "price" } } } }
-
Agregación de Mínimo (Min Aggregation): Encuentra el valor mínimo de un campo numérico.
{ "aggs": { "min_price": { "min": { "field": "price" } } } }
Ejemplo Práctico
Supongamos que tenemos un índice de productos y queremos obtener el precio promedio de los productos, así como la distribución de productos por categoría.
{ "aggs": { "average_price": { "avg": { "field": "price" } }, "category_distribution": { "terms": { "field": "category.keyword" } } } }
Explicación del Ejemplo
- average_price: Calcula el precio promedio de todos los productos.
- category_distribution: Agrupa los productos por categoría y cuenta el número de productos en cada categoría.
Ejercicios Prácticos
Ejercicio 1: Agregación de Términos
Crea una consulta que agrupe los documentos por el campo brand
y cuente el número de documentos en cada grupo.
Solución:
Ejercicio 2: Agregación de Rango
Crea una consulta que agrupe los documentos en rangos de precios: menos de 100, entre 100 y 200, y más de 200.
Solución:
{ "aggs": { "price_ranges": { "range": { "field": "price", "ranges": [ { "to": 100 }, { "from": 100, "to": 200 }, { "from": 200 } ] } } } }
Ejercicio 3: Agregación de Promedio
Crea una consulta que calcule el precio promedio de los productos en cada categoría.
Solución:
{ "aggs": { "categories": { "terms": { "field": "category.keyword" }, "aggs": { "average_price": { "avg": { "field": "price" } } } } } }
Conclusión
Las agregaciones en Elasticsearch son una herramienta esencial para el análisis de datos. Permiten agrupar, filtrar y calcular métricas sobre los documentos indexados, proporcionando insights valiosos. En este tema, hemos cubierto los conceptos básicos de las agregaciones, los diferentes tipos disponibles y cómo utilizarlas en tus consultas. Con esta base, estarás preparado para explorar y utilizar agregaciones más avanzadas en tus proyectos de Elasticsearch.
Curso de Elasticsearch
Módulo 1: Introducción a Elasticsearch
- ¿Qué es Elasticsearch?
- Instalando Elasticsearch
- Conceptos Básicos: Nodos, Clústeres e Índices
- Arquitectura de Elasticsearch
Módulo 2: Empezando con Elasticsearch
Módulo 3: Técnicas Avanzadas de Búsqueda
Módulo 4: Modelado de Datos y Gestión de Índices
- Mapeo y Analizadores
- Plantillas de Índices
- Alias y Reindexación
- Gestión del Ciclo de Vida del Índice
Módulo 5: Rendimiento y Escalabilidad
- Optimizando el Rendimiento de Búsqueda
- Escalando Elasticsearch
- Monitoreo y Mantenimiento
- Respaldo y Restauración
Módulo 6: Seguridad y Control de Acceso
- Asegurando Elasticsearch
- Autenticación y Autorización de Usuarios
- Control de Acceso Basado en Roles
- Auditoría y Cumplimiento
Módulo 7: Integraciones y Ecosistema
- Elasticsearch con Logstash
- Elasticsearch con Kibana
- Elasticsearch con Beats
- Elasticsearch con Otras Herramientas