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
.keyworden agregacions de termes per a camps de text.- Solució: Assegura't d'utilitzar el subcamp
.keywordper 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
