Я хочу для каждой единицы (org_name_en
) добавить новое поле с агрегацией для review_count
- sum / count
. Поле members
имеет тип nested
. Ниже вы можете увидеть кусок ES db:
"hits" : [
{
"_index" : "some_index",
"_type" : "_doc",
"_id" : "some_id",
"_score" : 1.0,
"_source" : {
"target_date" : "some_data",
"org_name" : "abc",
"org_name_en" : "ABC",
[...]
"members" : [
{
[...]
"review_count" : 50.0,
},
{
[...]
"review_count" : 60.0,
},
Конечный результат должен быть таким:
"hits" : [
{
[...]
"_source" : {
"target_date" : "filtered with some data",
"org_name" : "abc",
"org_name_en" : "ABC",
[...]
"members" : [
{
[...]
"review_count" : 50.0,
},
{
[...]
"review_count" : 60.0,
},
],
"review_total": {
"review_sum": 110,
"review_count: 2
},
[...next unit DEF, GHI, XYZ with the same aggregation...]
Моя попытка с Elasticsearch-DSL в python - работает только для данного модуля, поэтому мне нужно сначала отфильтровать его
qs.aggs.bucket('members', 'nested', path='members').metric('review_total', 'sum', field='members.review_count')