除了依靠弹性搜索聚合之外,如何获取其他数据?

Posted

技术标签:

【中文标题】除了依靠弹性搜索聚合之外,如何获取其他数据?【英文标题】:How to get other data beside count on elasticsearch aggregations? 【发布时间】:2014-12-25 22:41:48 【问题描述】:

据我了解,在用于获取指标数据(例如 max、min、avg、cnt)的 elasticsearch 上进行聚合。但是,分桶后是否可以得到全行数据?

所以在 sql 语言中会是这样的

SELECT username, nickname, COUNT(*) FROM posts GROUP BY username ORDER BY 2 desc;

所以我想按用户名对数据进行分组,然后检索一些数据,不仅是用户名和计数,还有昵称,根据我的理解(和很多谷歌搜索)很难做到或应该使用父子,等等

如果可能的话,如何做到这一点?

【问题讨论】:

您的 SQL 查询无效。按username 分组时,不能选择nickname。它不是一个聚合字段。你能解释一下你想用示例数据做些什么吗? 我只想获取用于聚合的字段旁边的其他字段,例如当我按“日期”分组时,然后在“已售出”时以最大值进行子聚合,我得到的只是日期,最大销售量,不知道查询/最受欢迎的商品 【参考方案1】:

聚合旨在创建存储桶并在这些存储桶上进行计算。但是,如果我理解你的问题,那么热门聚合可能就是你要找的。这确实使您能够创建存储桶并返回这些存储桶中得分最高的项目。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html

【讨论】:

我假设分数是指搜索分数?我不想要最高分,我已经有一个整数类型的字段名称sales,我想查询sales字段的每日最大值,所以结果是=>"1 Jan 1990":"max":100, "itemID":001, "2 Jan 1990":"max":101, "itemID":2。目前我只能使用度量聚合获取 max 属性,并且无法判断哪个项目在 sales field = 100 中具有值(或等于 1 月 2 日的 101)

以上是关于除了依靠弹性搜索聚合之外,如何获取其他数据?的主要内容,如果未能解决你的问题,请参考以下文章

OHLC 聚合器不适用于 Pandas 上的数据框?

将聚合限制为弹性搜索中的热门内容

是否有可能对弹性搜索中的热门命中结果进行聚合?

Spring数据弹性搜索总和 - 价格,数量

应用聚合后过滤掉弹性搜索中的术语聚合桶

如何使用Hadoop捆绑的低级工具进行数据提取?