【发布时间】:2016-12-09 17:03:13
【问题描述】:
我在 ES 中有一个索引,其中包含 3 种类型 A、B、C。每种类型包含 1000 种产品。当用户进行没有评分的查询时,ES首先返回A的所有结果,然后是B的所有结果,然后是C的所有结果。
我需要的是呈现 3 种类型的混合结果。
我查看了随机评分,但这并不是我所需要的。
有什么想法吗?
【问题讨论】:
标签: elasticsearch
我在 ES 中有一个索引,其中包含 3 种类型 A、B、C。每种类型包含 1000 种产品。当用户进行没有评分的查询时,ES首先返回A的所有结果,然后是B的所有结果,然后是C的所有结果。
我需要的是呈现 3 种类型的混合结果。
我查看了随机评分,但这并不是我所需要的。
有什么想法吗?
【问题讨论】:
标签: elasticsearch
你真的需要随机性还是一个类型的简单 3 个结果?通过top hits聚合可以实现每种类型的三个结果。首先按 _type 字段进行聚合,然后应用热门匹配聚合:
{
"query": {
"function_score": {
"query": {
"match_all": {
}
},
"random_score": {
"seed": 137677928418000
}
}
},
"aggs": {
"all_type": {
"terms": {
"field": "_type"
},
"aggs": {
"by_top_hit": {
"top_hits": {
"size": 3
}
}
}
}
}
}
编辑:我添加了随机评分,以获得随机结果,我认为为每个 _type 获取特殊数量的文档很困难,一个解决方案可能是从所有 _type 中获得足够的 字段。
【讨论】: