【问题标题】: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。它不是一个聚合字段。你能解释一下你想用示例数据做些什么吗?
  • 我只想获取用于聚合的字段旁边的其他字段,例如当我按“日期”分组时,然后在“已售出”时以最大值进行子聚合,我得到的只是日期,最大销售量,不知道查询/最受欢迎的商品

标签: sql elasticsearch group-by aggregation


【解决方案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)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 2019-11-08
  • 2021-02-19
相关资源
最近更新 更多