English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Aggrégation d'Elasticsearch

Le cadre d'agrégation collecte tous les données sélectionnées par une requête de recherche et est composé de nombreux éléments de construction, ce qui aide à construire des résumés complexes des données. La structure de base des agrégations est présentée comme suit-

"aggregations" : {
   "" : {
      "" : {
      }
 
      [["meta" : { [] } ]?
      [["aggregations" : { []+ }
   }
   ["" : { ... } ]?*
}

Les agrégations ont différents types, chacun ayant son propre objectif. Ce chapitre discutera en détail de ces questions.

Agrégation de métrique

Ces agrégations aident à calculer la matrice en fonction des valeurs de champ des documents agrégés, et peuvent parfois générer des valeurs à partir de scripts.

La matrice de valeurs numériques peut être un seul valeur (comme l'agrégation moyenne) ou plusieurs valeurs (comme les statistiques).

Agrégation moyenne

Cette agrégation est utilisée pour obtenir la valeur moyenne de tout champ numérique existant dans les documents agrégés. Par exemple,

POST /schools/_search
{
   "aggs":{
      "avg_fees":{"avg":{"field":"fees"}}
   }
}

Lors de l'exécution du code ci-dessus, nous avons obtenu les résultats suivants-

{
   "took": 41,
   "timed_out": false
   "_shards" : {}}
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   }
   "hits" : {
      "total" : {
         "value" : 2,
         "relation" : "eq"
      }
      "max_score": 1.0,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": ""5",
            "_score": 1.0,
            "_source": {
               "name": "Central School",
               "description": "CBSE Affiliation",
               "street": "Nagan",
               "city": "paprola",
               "state": "HP",
               "zip": ""176115",
               "location": [
                  31.8955385,
                  76.8380405
               ],
            "fees": 2200,
            "tags": [
               "Senior Secondary",
               "beautiful campus"
            ],
            "rating": ""3.3"
         }
      }
      {
         "_index": "schools",
         "_type": "school",
         "_id": ""4",
         "_score": 1.0,
         "_source": {
            "name": "City Best School",
            "description": "ICSE",
            "street": "West End",
            "city": "Meerut",
            "state": "UP",
            "zip": ""250002",
            "location": [
               28.9926174,
               77.692485
            ],
            "fees": 3500,
            "tags": [
               "fully computerized"
            ],
            "rating": ""4.5"
         }
      }
   ]
 }
   "aggregations" : {
      "avg_fees": {
         "value" : 2850.0
      }
   }
}

Agrégation de cardinalité

Cette agrégation fournit le compte des valeurs distinctes d'un champ spécifique.

POST /schools/_search?size=0
{
   "aggs":{
      "distinct_name_count":{"cardinality":{"field":"fees"}}
   }
}

Lors de l'exécution du code ci-dessus, nous avons obtenu les résultats suivants-

{
   "took": 2,
   "timed_out": false
   "_shards" : {}}
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   }
   "hits" : {
      "total" : {
         "value" : 2,
         "relation" : "eq"
      }
      "max_score" : null,
      "hits" : [ ]
   }
   "aggregations" : {
      "distinct_name_count": {
         "value" : 2
      }
   }
}

Note La valeur de la base est2parce que les frais ont deux valeurs différentes.

Agrégation de statistiques étendues

Cette agrégation génère toutes les informations statistiques sur le champ numérique spécifique des documents d'agrégation.

POST /schools/_search?size=0
{
   "aggs": {
      "fees_stats": {
   }
}

Lors de l'exécution du code ci-dessus, nous avons obtenu les résultats suivants-

{
   "took": 8,
   "timed_out": false
   "_shards" : {}}
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   }
   "hits" : {
      "total" : {
         "value" : 2,
         "relation" : "eq"
      }
      "max_score" : null,
      "hits" : [ ]
   }
   "aggregations" : {
      "fees_stats": {
         "count": 2,
         "min": 2200.0,
         "max": 3500.0,
         "avg": 2850.0,
         "sum": 5700.0,
         "sum_of_squares": 1.709E7,
         "variance": 422500.0,
         "std_deviation": 650.0,
         "std_deviation_bounds": {
            "upper": 4150.0,
            "lower": 1550.0
         }
      }
   }
}

Agrégation maximale

Cette agrégation trouve la valeur maximale du champ numérique spécifique dans les documents d'agrégation.

POST /schools/_search?size=0
{
   "aggs": {
   "max_fees": {
   }
}

Lors de l'exécution du code ci-dessus, nous avons obtenu les résultats suivants-

{
   "took": 16,
   "timed_out": false
   "_shards" : {}}
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   }
  "hits" : {
      "total" : {
         "value" : 2,
         "relation" : "eq"
      }
      "max_score" : null,
      "hits" : [ ]
   }
   "aggregations" : {
      "max_fees": {
         "value" : 3500.0
      }
   }
}

Agrégation minimale

Cette agrégation trouve la valeur minimale du champ numérique spécifique dans les documents d'agrégation.

POST /schools/_search?size=0
{
   "aggs": {
      "min_fees": {
   }
}

Lors de l'exécution du code ci-dessus, nous avons obtenu les résultats suivants-

{
   "took": 2,
   "timed_out": false
   "_shards" : {}}
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   }
   "hits" : {
      "total" : {
         "value" : 2,
         "relation" : "eq"
      }
      "max_score" : null,
      "hits" : [ ]
   }
  "aggregations" : {
      "min_fees" : {
         "value" : 2200.0
      }
   }
}

Somme d'agrégation

Cette agrégation calcule la somme du champ numérique spécifique des documents d'agrégation.

POST /schools/_search?size=0
{
   "aggs": {
      "total_fees": {
   }
}

Lors de l'exécution du code ci-dessus, nous avons obtenu les résultats suivants-

{
   "took": 8,
   "timed_out": false
   "_shards" : {}}
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   }
   "hits" : {
      "total" : {
         "value" : 2,
         "relation" : "eq"
      }
      "max_score" : null,
      "hits" : [ ]
   }
   "aggregations" : {
      "total_fees": {
         "value" : 5700.0
      }
   }
}

Dans des cas spéciaux, il existe d'autres types d'agrégateurs de mesures, tels que l'agrégation de frontière géographique et l'agrégation de centre de gravité géographique, pour réaliser la géolocalisation.

Agrégation statistique

Un agrégateur de mesure multiple, qui peut calculer des informations statistiques basées sur les valeurs extraites des documents d'agrégation.

POST /schools/_search?size=0
{
   "aggs": {
      "grades_stats": {
   }
}

Lors de l'exécution du code ci-dessus, nous avons obtenu les résultats suivants-

{
   "took": 2,
   "timed_out": false
   "_shards" : {}}
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   }
   "hits" : {
      "total" : {
         "value" : 2,
         "relation" : "eq"
      }
      "max_score" : null,
      "hits" : [ ]
   }
   "aggregations" : {
      "grades_stats": {
         "count": 2,
         "min": 2200.0,
         "max": 3500.0,
         "avg": 2850.0,
         "sum": 5700.0
      }
   }
}

Métadonnées d'agrégation

Vous pouvez utiliser le marqueur meta lors de la requête pour ajouter des données sur l'agrégation et les obtenir en réponse.

POST /schools/_search?size=0
{
   "aggs": {
      "min_fees": {
         "meta": {
            "dsc": "Les frais les plus bas de l'année"
         }
      }
   }
}

Lors de l'exécution du code ci-dessus, nous avons obtenu les résultats suivants-

{
   "took": 0
   "timed_out": false
   "_shards" : {}}
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   }
   "hits" : {
      "total" : {
         "value" : 2,
         "relation" : "eq"
      }
      "max_score" : null,
      "hits" : [ ]
   }
   "aggregations" : {
      "min_fees" : {
         "meta" : {
            "dsc" : "Frais les plus bas de l'année"
         }
         "value" : 2850.0
      }
   }
}