Я хотел бы выполнить некоторые агрегации для наиболее активных 10% пользователей.Как я могу получить наиболее активных 10% пользователей в Elasticsearch?
Позволяет сказать, что мой документ является:
{
"createDate": "2014-10-7T05:43:02",
"user":"Raz",
"os":"IOS"
},
{
"createDate": "2014-10-7T07:43:02",
"user":"Raz",
"os":"Android"
},
{
"createDate": "2014-10-7T09:43:02",
"user":"Jim",
"os":"Android"
}
и моя агрегация:
"aggs": {
"time_aggs": {
"date_histogram": {
"field": "createDate",
"interval": "10m"
},"aggs": {
"device_os":{
"term": {
"os":"IOS"
}
}
}
}
Что я должен добавить в агрегатах применять их только на самых 10% активных пользователей?
Спасибо.
Как вы определяете "активный пользователь"? –
Кто-то, кто в этом случае (представлен документом выше) в определенный период времени. Например, в примере, который я представил, Raz более активен, чем Jim 7 октября. – user3767296
Возможно, вы сможете использовать агрегацию процентов для этого и, возможно, объединить его с запросом терминов для пользователя. Не совсем уверен, возможно ли это, хотя это возможно, используя некоторые скрипты. http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-percentile-aggregation.html –