提问要多花一点心思哦

collapse inner_hits 性能问题。

Elasticsearch | 作者 zx3271234 | 发布于2018年10月07日 | 阅读数:5941

使用ES的collapse功能:https://www.elastic.co/guide/e ... .html
查询每一类商品中价格最低的一款:
GET xxx/sku/_search
{
"from": 0,
"size": 10,
"sort": [
{
"firstUpTime": {
"order": "desc"
}
}
],
"collapse": {
"field": "goodsWebSpu",
"inner_hits": {
"name": "skus",
"size": 1,
"sort": [
{
"displayPrice": {
"order": "asc"
}
}
]
}
}
}
上面的查询语句可以得到正确的结果,但是在Kibana中观察到,使用带inner_hits的collapse语句之后,集群的Search Rate暴增:

collapse对比.png

 
在ES中文档中看到的原因是:对于collapse得到的每一个结果,如果有inner_hits,都会生成额外的一次请求。
 
请问还有没有其他的方法,可以实现相同的功能,并且能减轻ES集群的压力。 
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: zx3271234

用聚合的metric中的min聚合可以满足要求的

zx3271234

赞同来自:

collapse.png

 

rochy - rochy_he

赞同来自:

推荐使用 term 聚合 加上 topN 聚合来得到你需要的每个类目中的最大价格的商品

要回复问题请先登录注册