#elasticsearch #nested #aggregation
#elasticsearch #вложенный #агрегирование
Вопрос:
Я хотел бы перечислить что-то вроде того, сколько пользователей владеет разным количеством продуктов.
например
10 users has 5 products
5 users has 4 products
8 users has 3 products
с заданным отображением
{
"user_id"
"product_id"
}
Однако для функции вложенной агрегации я могу найти только то, что вложенная агрегация может «группировать» поле сопоставления каждого сегмента, но не статистику сегмента (например, value_count, sum … и т. д.)
Логика запроса, которую я могу себе представить, такова: (конечно, это не работает)
{
"aggs": {
"test_aggr" :{
"terms": { "field": "user_id" },
"aggs" : {
"user_own_qty": {
"value_count" : {"field" : "user_id" },
"aggs": {
"group_by_user_own_qty": {
"terms": { "field": "user_own_qty.value" },
"aggs": {
"user_qty_vs_user_own_qty": {
"value_count" : { "field" : "user_own_qty.value"
}
}
}
}
}
}
}
}
}
Где SQL (Oracle), кажется, может быть легко выполнен:
with user_product_count as(
select user, count(product) as own_product_count
from product
group by user
)
select count(user), own_product count
from user_product_count
group by own_product_count
Пожалуйста, сообщите. Большое спасибо 🙂