Агрегирование результатов Elasticsearch по значениям результатов агрегации метрик

#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
 

Пожалуйста, сообщите. Большое спасибо 🙂