2015-10-05 2 views
2

есть документы с категорией (числом) и кусками (длинными) полями. Мне нужно какое-то aggregration, что группа этих документов по категориям и просуммировать все части в немУтилизация агрегированных данных Elasticsearch

здесь, как документы выглядят:

результата
{ 
"category":"1", 
"piece":"10.000" 
}, 
{ 
"category":"2", 
"piece":"15.000" 
} , 
{ 
"category":"2", 
"piece":"10.000" 
}, 
{ 
"category":"3", 
"piece":"5.000" 
} 
... 

Запроса должен быть как:

{ 
"category":"1", 
"total_amount":"10.000" 
} 
{ 
"category":"2", 
"total_amount":"25.000" 
} 
{ 
"category":"3", 
"total_amount":"5.000" 
} 
.. 

любого совет ?

ответ

1

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

Вот как это может выглядеть:

 "aggs" : { 
      "categories" : { 
       "terms" : { 
        "field" : "category" 
       }, 
       "aggs" : { 
        "sum_category" : { 
         "sum": { "field": "piece" } 
        } 
       } 
      } 
     } 
+0

Да то будет совсем верно :) –