Les agregacions són una de les característiques més potents d'Elasticsearch, permetent realitzar anàlisis de dades avançades i obtenir estadístiques a partir de les dades indexades. En aquesta secció, explorarem els conceptes bàsics de les agregacions, els diferents tipus d'agregacions disponibles i com utilitzar-les en les cerques.
Conceptes Bàsics d'Agregacions
Què són les Agregacions?
Les agregacions permeten agrupar i resumir dades en Elasticsearch. Són similars a les funcions d'agrupació en SQL, com GROUP BY
, però amb molta més flexibilitat i potència.
Tipus d'Agregacions
Elasticsearch ofereix diversos tipus d'agregacions, cadascuna amb un propòsit específic:
-
Agregacions de Valors: Calculen mètriques a partir dels valors dels documents.
- Mètriques: Com ara
avg
,sum
,min
,max
,stats
. - Percentils: Com ara
percentiles
,percentile_ranks
.
- Mètriques: Com ara
-
Agregacions de Bucket: Agrupen documents en buckets (cubells) basats en certs criteris.
- Termes: Agrupa per valors únics d'un camp.
- Rangs: Agrupa per rangs de valors.
- Histogrames: Agrupa per intervals de valors.
- Data Histogrames: Agrupa per intervals de dates.
-
Agregacions de Matriu: Operen sobre múltiples camps.
- Stats: Com ara
matrix_stats
.
- Stats: Com ara
-
Agregacions de Pipeline: Operen sobre els resultats d'altres agregacions.
- Derivades: Com ara
derivative
,moving_avg
.
- Derivades: Com ara
Exemple Pràctic d'Agregacions
Exemple 1: Agregació de Termes
Suposem que tenim un índex de productes i volem saber quants productes hi ha per cada categoria.
POST /products/_search { "size": 0, "aggs": { "categories": { "terms": { "field": "category.keyword" } } } }
Explicació:
size: 0
: No volem els documents, només les agregacions.aggs
: Defineix les agregacions.categories
: Nom de l'agregació.terms
: Tipus d'agregació.field
: Camp sobre el qual s'agrupa.
Exemple 2: Agregació de Mètriques
Volem calcular la mitjana de preus dels productes.
Explicació:
average_price
: Nom de l'agregació.avg
: Tipus d'agregació.field
: Camp sobre el qual es calcula la mitjana.
Exemple 3: Agregació de Data Histograma
Volem agrupar les vendes per mesos.
POST /sales/_search { "size": 0, "aggs": { "sales_over_time": { "date_histogram": { "field": "sale_date", "calendar_interval": "month" } } } }
Explicació:
sales_over_time
: Nom de l'agregació.date_histogram
: Tipus d'agregació.field
: Camp de data sobre el qual s'agrupa.calendar_interval
: Interval de temps per agrupar (en aquest cas, mesos).
Exercicis Pràctics
Exercici 1: Agregació de Termes
Objectiu: Trobar el nombre de documents per cada valor únic del camp status
.
Instruccions:
- Crea una consulta d'agregació de termes per al camp
status
. - Executa la consulta i interpreta els resultats.
Solució:
POST /your_index/_search { "size": 0, "aggs": { "status_count": { "terms": { "field": "status.keyword" } } } }
Exercici 2: Agregació de Mètriques
Objectiu: Calcular la suma total dels valors del camp amount
.
Instruccions:
- Crea una consulta d'agregació de suma per al camp
amount
. - Executa la consulta i interpreta els resultats.
Solució:
POST /your_index/_search { "size": 0, "aggs": { "total_amount": { "sum": { "field": "amount" } } } }
Exercici 3: Agregació de Data Histograma
Objectiu: Agrupar els documents per dies basats en el camp timestamp
.
Instruccions:
- Crea una consulta d'agregació de data histograma per al camp
timestamp
. - Executa la consulta i interpreta els resultats.
Solució:
POST /your_index/_search { "size": 0, "aggs": { "daily_activity": { "date_histogram": { "field": "timestamp", "calendar_interval": "day" } } } }
Errors Comuns i Consells
-
Error: No especificar el camp
.keyword
en agregacions de termes per a camps de text.- Solució: Assegura't d'utilitzar el subcamp
.keyword
per a camps de text.
- Solució: Assegura't d'utilitzar el subcamp
-
Error: No ajustar correctament els intervals en agregacions de data histograma.
- Solució: Tria intervals adequats (
day
,month
,year
) segons les teves necessitats d'anàlisi.
- Solució: Tria intervals adequats (
-
Consell: Utilitza agregacions de pipeline per realitzar càlculs avançats sobre els resultats d'altres agregacions.
Conclusió
Les agregacions en Elasticsearch són una eina poderosa per analitzar i resumir dades. Hem vist els conceptes bàsics, diferents tipus d'agregacions i exemples pràctics per començar a utilitzar-les. Amb aquesta base, pots explorar més tipus d'agregacions i combinar-les per obtenir anàlisis més complexes i detallades.
Curs d'Elasticsearch
Mòdul 1: Introducció a Elasticsearch
- Què és Elasticsearch?
- Instal·lant Elasticsearch
- Conceptes Bàsics: Nodes, Clústers i Índexs
- Arquitectura d'Elasticsearch
Mòdul 2: Començant amb Elasticsearch
Mòdul 3: Tècniques Avançades de Cerca
Mòdul 4: Modelatge de Dades i Gestió d'Índexs
Mòdul 5: Rendiment i Escalabilitat
- Optimitzant el Rendiment de la Cerca
- Escalant Elasticsearch
- Monitorització i Manteniment
- Còpia de Seguretat i Restauració
Mòdul 6: Seguretat i Control d'Accés
- Assegurant Elasticsearch
- Autenticació i Autorització d'Usuaris
- Control d'Accés Basat en Rols
- Auditoria i Compliment
Mòdul 7: Integracions i Ecosistema
- Elasticsearch amb Logstash
- Elasticsearch amb Kibana
- Elasticsearch amb Beats
- Elasticsearch amb Altres Eines