【问题标题】:How to get the count of distinct values in a column(field) in an elasticsearch index如何获取弹性搜索索引中列(字段)中不同值的计数
【发布时间】:2019-02-05 06:50:30
【问题描述】:

我正在尝试使用 python 中的 elasticsearch-dsl 包获取所有行的计数和列中不同值的计数。
我对弹性搜索相当陌生,所以如果我问了一个愚蠢的问题,我深表歉意,但我已经阅读了所有可用的文档并且无法弄清楚这一点。 对此的任何帮助将不胜感激!

为了获取所有行的计数,我使用了 '.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()

第二个代码 sn-p 返回 10 行,我也尝试在 .bucket() 中使用 'terms' 参数,但它返回了列中每个不同值的出现次数,而且也仅适用于10 个值。

【问题讨论】:

    标签: python aggregation elasticsearch-dsl


    【解决方案1】:

    您必须访问s.aggregations.by_cluster.value(在运行execute() 之后)才能获得cardinality 聚合的结果,它可以满足您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多