У меня есть эти фиктивные данные, которые я хочу сгруппировать по name
, затем есть поле total
, которое является суммой полей value
только , если статус won
.
[{
name: 'Foo',
value: 12,
status: 'won'
},
{
name: 'Foo',
value: 2,
status: 'lost'
},
{
name: 'Foo',
value: 10,
status: 'won'
},
{
name: 'Bar',
value: 4,
status: 'won'
}]
Я могу группировать по имени и получить общую сумму полей значений, но не выяснил, как суммировать только выигранные дела.
aggs: {
by_name: {
terms: {
field: 'name'
},
aggs: {
total_value: {
sum: {
field: 'value' // What I want is value if status == 'won'
}
}
}
}
Мой желаемый результат должен выглядетькак:
[{
name: 'Foo',
total_value: 22 // Currently 24
}, {
name: 'Bar',
total_value: 4
}]
Это похоже на распространенный случай, но пока я нашел много информации о фильтрации, но не об этом конкретном случае.