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