聚合扫描结果

Scan result of a aggregation

我想看看一个用户为每个用户发布了多少个独特的 link。以下是我到目前为止的想法

s.aggs.bucket('user_term', A('terms', field='user__id')).metric('url_count', A('value_count', field='link'))

但是,我还没有找到迭代该结果的方法。有办法吗?

这不会给你一个唯一的计数,只是一些具有该字段值的文档,你想使用 cardinality 代替:

s.aggs.bucket('users', 'terms', field='user.id').metric('url_count', 'cardinality', field='link')

r = s.execute()

for user in r.aggregations.users.buckets:
    print(f'User {user.key} posted {user.url_count.value} links')

希望对您有所帮助