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

Agregação do Elasticsearch

A estrutura básica da coleta de agregação é composta por muitos blocos que coletam todos os dados selecionados por uma consulta de pesquisa, ajudando a construir resumos complexos de dados.-

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

As agregações têm diferentes tipos, cada um com seu próprio propósito. Este capítulo discutirá detalhadamente esses tópicos.

Agregação de indicadores

Estas agregações ajudam a calcular a matriz com base nos valores de campo de documentos de agregação, e às vezes também podem gerar alguns valores a partir de scripts.

A matriz numérica pode ser univalente (como a agregação média) ou multivalorada (como estatísticas).

Agregação média

Esta agregação é usada para obter a média de qualquer campo numérico existente em documentos de agregação. Por exemplo,

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

Ao executar o código acima, obtemos os seguintes resultados-

{
   "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
      }
   }
}

Agregação cardinal

Esta agregação fornece a contagem de diferentes valores de campo específico.

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

Ao executar o código acima, obtemos os seguintes resultados-

{
   "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
      }
   }
}

Nota −O valor da base é2porque há dois valores diferentes de custos.

Agregação de estatísticas estendidas

Esta agregação gera todas as informações estatísticas sobre o campo numérico específico dos documentos de agregação.

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

Ao executar o código acima, obtemos os seguintes resultados-

{
   "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
         }
      }
   }
}

Agregação máxima

Esta agregação encontra o valor máximo do campo numérico específico nos documentos de agregação.

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

Ao executar o código acima, obtemos os seguintes resultados-

{
   "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
      }
   }
}

Agregação mínima

Esta agregação encontra o valor mínimo do campo numérico específico nos documentos de agregação.

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

Ao executar o código acima, obtemos os seguintes resultados-

{
   "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
      }
   }
}

Soma agregada

Esta agregação calcula a soma do campo de valor específico dos documentos de agregação.

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

Ao executar o código acima, obtemos os seguintes resultados-

{
   "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
      }
   }
}

Em alguns casos específicos, há outras agregações de medida, como agregação de limites geográficos e agregação de centroide geográfico, para alcançar localização geográfica.

Agregação estatística

Um tipo de agregação de medida multivalorada que calcula informações estatísticas com base em valores extraídos dos documentos de agregação.

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

Ao executar o código acima, obtemos os seguintes resultados-

{
   "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
      }
   }
}

Meta-dados de agregação

Você pode usar o rótulo meta na solicitação para adicionar alguns dados sobre agregação e obtê-los como resposta.

POST /schools/_search?size=0
{
   "aggs": {
      "min_fees": { "avg": { "field": "fees" } }
         "meta": {
            "dsc": "Lowest Fees This Year"
         }
      }
   }
}

Ao executar o código acima, obtemos os seguintes resultados-

{
   "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": "Taxas Mais Baixas do Ano"
         }
         "value": 2850.0
      }
   }
}