是否有可能对弹性搜索中的热门命中结果进行聚合?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否有可能对弹性搜索中的热门命中结果进行聚合?相关的知识,希望对你有一定的参考价值。
我基本上需要根据orderId对结果进行分组,并根据修改的时间获取每个订单的最新记录。我使用热门命中并将大小限制为1来完成此操作,我能够获得最新修改时间的记录。我无法做的是:我想根据订单状态(如已处理,已发货等)对此热门点击聚合的结果进行分组,并获取每个州的计数。
所以我期待这样的事情:State:Processed,count:2 状态:InProcess,count:4
我的聚合是:
"aggregations":
"aggs":
"terms":
"field": "orderId"
,
"aggs":
"top_hits_modifiedTime":
"top_hits":
"sort": [
"modifiedTime":
"order": "desc"
],
"size" : 1
答案
是的,有可能因为我遇到了同样的问题,然后我在嵌套聚合中提供了一个解决方案。在这里我们可以在modifiedTime
上添加一个带有max聚合的并行聚合。然后根据您添加的最大聚合对其进行排序。您只需根据第一级聚合调整订单声明。
通过这种方法,您将获得modifiedTime的最高命中顺序。在热门命中后,你将根据与max
聚合平行的top_hits
聚合对所有桶进行排序
请查看以下查询:
"aggregations":
"aggs":
"terms":
"field": "orderId",
"order":
"max_modifiedTime": "asc"
,
"aggs":
"top_hits_modifiedTime":
"top_hits":
"sort": [
"modifiedTime":
"order": "desc"
],
"size": 1
,
"max_modifiedTime":
"max":
"field": "modifiedTime"
希望这能解决你的问题。如果它对你来说很好,请试着让我知道。
以上是关于是否有可能对弹性搜索中的热门命中结果进行聚合?的主要内容,如果未能解决你的问题,请参考以下文章