Я использую ES с Ruby on Rails, я нахожусь в ситуации, когда мне приходится перечислять всех уникальных пользователей, поэтому ниже приведен код, который я использую для его получения.
buckets['unique_users'] = {
filter: { match_all: {} },
aggregations: {
users_count: {
cardinality: {
field: :customer_email_key
}
}
}
}
и ниже - ответ:
unique_users: {
doc_count: 134,
users_count: {
value: 125
}
}
}
Это только показывает количество уникальных пользователей, но этот запрос не показывает список адресов электронной почты, поэтому, где проблемав этом запросе.Кто-нибудь может направить меня?
========== New Edits ==========
Теперь я использую код и он отлично работает с списком пользователей, и он имеет значение.
def buckets_for_unique_users(buckets, aggregations)
buckets['unique_users'] = {
filter: { match_all: {} },
aggregations: {
users_count: {
cardinality: {
field: :customer_email_key
}
},
details: {
terms: {
field: :customer_email_key,
size: 200
}
}
}
}
end
ответ на приведенный выше код выглядит следующим образом:
unique_users: {
doc_count: 134,
users_count: {
value: 125
},
details: {
doc_count_error_upper_bound: 0,
sum_other_doc_count: 0,
buckets: [
{
key: "example@gmail.com",
doc_count: 2
}
{....}
]
}
Теперь все идет идеально, но есть что-то в ответе, что немного сбивает с толку, поэтому я должен удалить это, то есть doc_count: 134 потому что я хочу сохранить users_count и удалить doc_count .Поэтому для этого я удалил фильтр : {match_all: {}}, из метода, а затем получил ошибку Missing definition for aggregation [unique_users]