我想将弹性搜索中的提升与结果的聚合相结合。 我的json查询用于显示搜索结果,并使用聚合进行分组,如下所示。
{
"min_score": 0.5,
"query": {
"filtered": {
"query": {
"match_all": {}
}
}
},
"aggs": {
"search_result": {
"terms": {
"field": "store_name.untouched",
"size": 0
},
"aggs": {
"search_result_second": {
"top_hits": {
"sort": {
"store_name.untouched": {
"order": "desc"
}
},
"size": 3,
"from": 0
}
}
}
},
"all_stores": {
"terms": {
"field": "store_name.untouched",
"size": 0
}
},
"all_categories": {
"terms": {
"field": "category_name.untouched",
"size": 0
},
"aggs": {
"all_category_id": {
"terms": {
"field": "product_category_ids"
}
}
}
},
"all_brands": {
"terms": {
"field": "brand.untouched",
"size": 0
}
},
"all_colors": {
"terms": {
"field": "color",
"size": 0
}
},
"min_price": {
"min": {
"field": "actual_price"
}
},
"max_price": {
"max": {
"field": "actual_price"
}
}
}
}
通过使用上面的查询,我得到每个商店的10个桶,其中每个商店的3个产品的分组。上面的查询的样本输出如下。
buckets: [10]
0: {
key: "ABC"{
0:{
storename:ABC
.
.
.
}
1:{
storename:ABC
.
.
.
}
2:{
storename:ABC
.
.
.
}
}
1: {
key: "EFG"{
0:{
storename:EFG
.
.
.
}
1:{
storename:EFG
.
.
.
}
2:{
storename:EFG
.
.
.
}
}
2: {
key: "HIJ"{
0:{
storename:HIJ
.
.
.
}
1:{
storename:HIJ
.
.
.
}
2:{
storename:HIJ
.
.
.
}
}
.
.
.
unitill bucket 10 stores.
现在我想将Boost应用于特定商店,它必须始终位于搜索结果的第一位,然后剩下的商店将在稍后推出。当我查询弹性搜索。 所以,如果我想提升 storename = EFG ,那么结果json应该是。
buckets: [10]
0: {
key: "EFG"{
0:{
storename:EFG
.
.
.
}
1:{
storename:EFG
.
.
.
}
2:{
storename:EFG
.
.
.
}
}
1: {
key: "ABC"{
0:{
storename:ABC
.
.
.
}
1:{
storename:ABC
.
.
.
}
2:{
storename:ABC
.
.
.
}
}
2: {
key: "HIJ"{
0:{
storename:HIJ
.
.
.
}
1:{
storename:HIJ
.
.
.
}
2:{
storename:HIJ
.
.
.
}
}
.
.
.
unitill bucket 10 stores.
使用elasticsearch是否有任何解决方案可以实现此结果。