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:

  1. 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.
  2. 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.
  3. Agregacions de Matriu: Operen sobre múltiples camps.

    • Stats: Com ara matrix_stats.
  4. Agregacions de Pipeline: Operen sobre els resultats d'altres agregacions.

    • Derivades: Com ara derivative, moving_avg.

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.

POST /products/_search
{
  "size": 0,
  "aggs": {
    "average_price": {
      "avg": {
        "field": "price"
      }
    }
  }
}

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:

  1. Crea una consulta d'agregació de termes per al camp status.
  2. 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:

  1. Crea una consulta d'agregació de suma per al camp amount.
  2. 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:

  1. Crea una consulta d'agregació de data histograma per al camp timestamp.
  2. 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.
  • 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.
  • 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.

© Copyright 2024. Tots els drets reservats