如何在Elasticsearch索引的列(字段)中获得不同值的计数

时间:2019-02-05 06:50:31

标签: python aggregation elasticsearch-dsl

我正在尝试使用python中的elasticsearch-dsl包来获取所有行的计数和一列中不同值的计数。
我对Elasticsearch还是相当陌生,所以如果我问一个愚蠢的问题,我深表歉意,但是我已经阅读了所有可用的文档,对此一无所知。 任何帮助,将不胜感激!

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

总行数:

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个值。

1 个答案:

答案 0 :(得分:1)

您必须访问s.aggregations.by_cluster.value(在运行execute()之后)才能获得cardinality聚合的结果。