我在ES中有一个索引,比如3种类型A,B,C。每种类型可容纳1000种产品。当用户进行没有评分的查询时,ES首先返回A中的所有结果,然后全部返回B,然后全部返回C.
我需要的是提供3种类型的混合结果。
我调查了随机得分,但这并不是我需要的。
有什么想法吗?
答案 0 :(得分:1)
你真的需要一个类型的随机性或简单的3个结果吗?通过顶部命中聚合可以实现每种类型的三个结果。首先按 _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获得足够的字段。