如何获取弹性搜索索引中列(字段)中不同值的计数

How to get the count of distinct values in a column(field) in an elasticsearch index

我正在尝试使用 python.
中的 elasticsearch-dsl 包获取列中所有行的计数和不同值的计数 我是 elasticsearch 的新手,所以如果我问的是一个愚蠢的问题,我深表歉意,但我已经阅读了所有可用的文档,但无法弄清楚。 如有任何帮助,我们将不胜感激!

为了获取所有行的计数,我使用了 '.aggs.metric(),它工作正常,为了获取不同值的计数,我尝试了 .bucket('terms') 和 .bucket('cardinality') 没有返回我想要的。

总行数:

s = Search(using=client, index="<index_name>")
s.aggs.metric('total', 'sum', field = '<column>')
s = s.execute()
s.aggregations.total.value

对于列中不同值的计数:

s = Search(using=client, index="brandcleanerv2")
s.aggs.metric('by_cluster', 'cardinality', field='cluster')
s = s.execute()

第二个代码片段返回 10 行,我也尝试在 .bucket() 中使用 'terms' 参数,但它返回了列中每个不同值的出现次数只有 10 个值。

您必须访问 s.aggregations.by_cluster.value(在 运行 和 execute() 之后)以获取执行您想要的 cardinality 聚合的结果。