выполнение агрегации по уникальным значениям - PullRequest
0 голосов
/ 29 марта 2019

У меня есть гипотетический сценарий - база данных, в которой электронная почта не является уникальной, и один из пользователей дважды зарегистрировался на одну и ту же электронную почту. Я хочу выполнить агрегацию для уникальных результатов, поэтому в MySQL я бы сделал что-то похожее на приведенное ниже:

SELECT count(*) as total_users, avg(age) as average_age
FROM users
GROUP BY email

Можно ли сделать то же самое в Elastic?

Мне известно о terms, однако, terms будет группировать пользователей в возвращенном наборе данных и применять агрегирование в каждой группировке, т.е.

"aggregations" : {
    "average_age" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "email@domain.com",
          "doc_count" : 2,
          "average_age" : {
            "value" : 27
          }
        }
      ]
     }
}

То, что я хочу, это один результат для сгруппированных данных, т. Е .:

"aggregations" : {
    "average_age" : {
        "average_age" : {
            "value" : 33
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...