如果是多个字段的聚合,那么tophits下再加子聚合吗?

Elasticsearch | 作者 wssmao | 发布于2018年09月10日 | 阅读数:461

遇到一个场景,需要对3个不同字段,进行聚合。这样聚合后还要解析3层key的结果。
想通过TopHits对3个字段进行汇总,但TopHits本身也是一个子聚合,这样的话,
是要添加3个TopHits子聚合还是在最上层或者最下层添加一个TopHits子聚合?
已经是3层嵌套聚合了,再加上TopHits子聚合,又怕影响性能。
 
哪位大神,帮忙解答一下疑问?
已邀请:

elasticStack - 90后it大数据男

赞同来自: wssmao

ES的聚合不同于SQL的group by, ES是通过嵌套聚合的方式实现多字段聚合,如果你是按照三个字段聚合,应该使用的是buckets agg->terms,buckets agg聚合其后可以跟0个或多个merics agg->TopHits, 如果你在每个terms后面跟一个TopHits,那么每个bucket下面将返回指定的记录数, 如果仅在最后一层指定TopHits,那么将返回最后一个bucket指定的记录数,看你需求来指定这个TopHits的位置和数量

要回复问题请先登录注册