我正在尝试使用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聚合的结果,该结果可以完成您想要的操作。

关于python - 如何在Elasticsearch索引中获取列(字段)中不同值的计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54529056/

10-11 13:24