Учебники

Elasticsearch — Агрегации

Эта структура собирает все данные, выбранные поисковым запросом. Эта структура состоит из множества строительных блоков, которые помогают составлять сложные сводки данных. Основная структура агрегации представлена ​​ниже —

"aggregations" : {
   "<aggregation_name>" : {
      "<aggregation_type>" : {
         <aggregation_body>
      }
		
      [,"meta" : { [<meta_data_body>] } ]?
      [,"aggregations" : { [<sub_aggregation>]+ } ]?
   }
}

Существуют различные типы агрегатов, каждый со своим назначением —

Метрические агрегаты

Эти агрегации помогают вычислять матрицы из значений полей агрегированных документов, и иногда некоторые значения могут быть сгенерированы из сценариев.

Числовые матрицы могут быть однозначными, как средняя агрегация, или многозначными, как статистика .

Средняя агрегация

Эта агрегация используется для получения среднего значения любого числового поля, присутствующего в агрегированных документах. Например,

POST http://localhost:9200/schools/_search

Тело запроса

{
   "aggs":{
      "avg_fees":{"avg":{"field":"fees"}}
   }
}

отклик

{
   "took":44, "timed_out":false, "_shards":{"total":5, "successful":5, "failed":0},
   "hits":{
      "total":3, "max_score":1.0, "hits":[
         {
            "_index":"schools", "_type":"school", "_id":"2", "_score":1.0,
            "_source":{
               "name":"Saint Paul School", "description":"ICSE Affiliation",
               "street":"Dawarka", "city":"Delhi", "state":"Delhi", 
               "zip":"110075", "location":[28.5733056, 77.0122136], "fees":5000, 
               "tags":["Good Faculty", "Great Sports"], "rating":"4.5"
            }
         },
			
         {
            "_index":"schools", "_type":"school", "_id":"1", "_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":"3", "_score":1.0,
            "_source":{
               "name":"Crescent School", "description":"State Board Affiliation",
               "street":"Tonk Road", "city":"Jaipur", "state":"RJ", 
               "zip":"176114", "location":[26.8535922, 75.7923988], "fees":2500, 
               "tags":["Well equipped labs"], "rating":"4.5"
            }
         }
      ]
   }, "aggregations":{"avg_fees":{"value":3233.3333333333335}}
}

Если значение отсутствует в одном или нескольких агрегированных документах, оно по умолчанию игнорируется. Вы можете добавить пропущенное поле в агрегат для обработки пропущенного значения по умолчанию.

{
   "aggs":{
      "avg_fees":{
         "avg":{
            "field":"fees"
            "missing":0
         }
      }
   }
}

Агрегирование кардинальности

Эта агрегация дает количество отдельных значений определенного поля. Например,

POST http://localhost:9200/schools*/_search

Тело запроса

{
   "aggs":{
      "distinct_name_count":{"cardinality":{"field":"name"}}
   }
}

отклик

………………………………………………
{
   "name":"Government School", "description":"State Board Afiliation",
   "street":"Hinjewadi", "city":"Pune", "state":"MH", "zip":"411057",
   "location":[18.599752, 73.6821995], "fees":500, "tags":["Great Sports"], 
   "rating":"4"
},

{
   "_index":"schools_gov", "_type": "school", "_id":"1", "_score":1.0,
   "_source":{
      "name":"Model School", "description":"CBSE Affiliation", "street":"silk city",
      "city":"Hyderabad", "state":"AP", "zip":"500030", 
      "location":[17.3903703, 78.4752129], "fees":700, 
      "tags":["Senior Secondary", "beautiful campus"], "rating":"3"
   }
}, "aggregations":{"disticnt_name_count":{"value":3}}
………………………………………………

Примечание . Значение кардинальности равно 3, поскольку в названии есть три различных значения: правительство, школа и модель.

Расширенная агрегация статистики

Эта агрегация генерирует всю статистику о конкретном числовом поле в агрегированных документах. Например,

POST http://localhost:9200/schools/school/_search

Тело запроса

{
   "aggs" : {
      "fees_stats" : { "extended_stats" : { "field" : "fees" } }
   }
}

отклик

………………………………………………
{
   "aggregations":{
      "fees_stats":{
         "count":3, "min":2200.0, "max":5000.0, 
         "avg":3233.3333333333335, "sum":9700.0,
         "sum_of_squares":3.609E7, "variance":1575555.555555556, 
         "std_deviation":1255.2113589175156,
				
         "std_deviation_bounds":{
            "upper":5743.756051168364, "lower":722.9106154983024
         }
      }
   }
}
………………………………………………

Макс Агрегация

Эта агрегация находит максимальное значение определенного числового поля в агрегированных документах. Например,

POST http://localhost:9200/schools*/_search

Тело запроса

{
   "aggs" : {
      "max_fees" : { "max" : { "field" : "fees" } }
   }
}

отклик

………………………………………………
{
   aggregations":{"max_fees":{"value":5000.0}}
}
………………………………………………

Мин Агрегация

Эта агрегация находит максимальное значение определенного числового поля в агрегированных документах. Например,

POST http://localhost:9200/schools*/_search

Тело запроса

{
   "aggs" : {
      "min_fees" : { "min" : { "field" : "fees" } }
   }
}

отклик

………………………………………………
"aggregations":{"min_fees":{"value":500.0}}
………………………………………………

Суммарная агрегация

Эта агрегация вычисляет сумму определенного числового поля в агрегированных документах. Например,

POST http://localhost:9200/schools*/_search

Тело запроса

{
   "aggs" : {
      "total_fees" : { "sum" : { "field" : "fees" } }
   }
}

отклик

………………………………………………
"aggregations":{"total_fees":{"value":10900.0}}
………………………………………………

Существуют некоторые другие агрегации метрик, которые используются в особых случаях, таких как агрегация географических границ и агрегация геоцентроидов с целью определения географического местоположения.

Агрегаты ковшей

Эти агрегаты содержат множество сегментов для различных типов агрегатов, имеющих критерий, который определяет, принадлежит ли документ этому сегменту или нет. Агрегаты ведра были описаны ниже —

Детская агрегация

Это объединение сегментов создает коллекцию документов, которые сопоставляются с родительским сегментом. Параметр типа используется для определения родительского индекса. Например, у нас есть бренд и его разные модели, а затем тип модели будет иметь следующее поле _parent —

{
   "model" : {
      "_parent" : {
         "type" : "brand"
      }
   }
}

Существует много других специальных агрегатов, которые полезны во многих других случаях, а именно:

  • Агрегирование гистограммы даты
  • Агрегация диапазона дат
  • Агрегация фильтров
  • Агрегация фильтров
  • Географическая агрегация расстояний
  • Сетка агрегации GeoHash
  • Глобальная агрегация
  • Агрегация гистограммы
  • Агрегация диапазона IPv4
  • Отсутствует агрегация
  • Вложенная агрегация
  • Агрегация диапазона
  • Обратное вложенное агрегирование
  • Агрегация пробоотборников
  • Основные термины Агрегация
  • Условия агрегации

Метаданные агрегации

Вы можете добавить некоторые данные об агрегации во время запроса, используя метатег, и можете получить их в ответ. Например,