Предположим, у меня есть набор данных эластичного поиска истории продаж, и вот документ, который я держу:
[
{
"payment": "cash",
"client_name": "john"
},
{
"payment": "cash",
"client_name": "bob"
},
{
"payment": "visa",
"client_name": "alis"
},
{
"payment": "mastercard",
"client_name": "matt"
},
{
"payment": "visa",
"client_name": "john"
}
]
Я хочу агрегировать продажи по методу оплаты, поэтому я агрегирую terms
payment
:
GET /_search
{
"size": 0,
"aggs": {
"payment_method": {
"terms": {
"field": "payment"
}
}
}
}
И мой ответ будет выглядеть так:
"aggregations" : {
"payment_method" : {
"buckets" : [
{
"key": "visa",
"doc_count": 2
},
{
"key": "cash",
"doc_count": 2
},
{
"key": "mastercard",
"doc_count": 1
}
]
}
}
Я хотел бы получить для каждого способа оплаты уникальный список клиентов, поэтому ответ будет выглядеть следующим образом:
"aggregations" : {
"payment_method" : {
"buckets" : [
{
"key": "visa",
"doc_count": 2,
"client_names": ["alis", "john"]
},
{
"key": "cash",
"doc_count": 2,
"client_names": ["john", "bob"]
},
{
"key": "mastercard",
"doc_count": 1,
client_names: ["matt"]
}
]
}
}
Возможно ли это определенным образом?
Я знаю, что могу подгруппировать по "client_name", но я хочу сгладить таким образом.
Заранее спасибо.