要不要也来分享分享一下啊

Elasticsearch 聚合时,如何获取非聚合字段的值

匿名 | 发布于2017年09月13日 | 阅读数:3213

类似 select a,b from table group by b; 而要获取到a的值
已邀请:

Cheetah

赞同来自: Horizon machao

topHits可以定义获取多少条
AggregationBuilders.topHits("名称").setFrom(0).setSize(10))

DK

赞同来自: shellmeng zpzkit

这种查询没有意义。
select a,b from table group by b; 在标准的sql查询里面这个是错误的。未在groub by出现的列不能在select里面出现 。
假如有两列 a、b的值如下
a1   b1 
a2   b1
 
经过group by b 后 b值为b1,对应的a值你认为是a1还是a2呢

Horizon

赞同来自:

size可以设置为1,聚合中加上topHits的话,感觉效率下降好多

shellmeng

赞同来自:

感觉这种应该分成两个查询。第一个查询是select b from table group by b limit N;
然后拿到具体的b了,再去关联所有的a。

eric930721

赞同来自:

我不明白楼上说的为什么要从聚合数据里用tophits去满足你的需求,查询出来的分响应数据和聚合数据,你去对b做聚合,然后去响应数据里面遍历a不好吗

gqzdev - ForFuture Group

赞同来自:

这个问题,只能分成两次请求去做吗?
就是在分组查询后,获取非分组的字段

wkdx - 宅男

赞同来自:

你sql这么写也是报错的啊,,,

要回复问题请先登录注册