按属性对弹性搜索连续结果进行自定义排序



我一直在互联网上查看Elasticsearch文档或示例,以解决我处理查询结果的问题,但到目前为止运气不佳。这是我想解决的问题。

我希望避免产品结果具有连续的merchant_id。我需要在具有相同merchant_id的产品之间移动文档。为了更直观地理解我的问题,这里有一个示例结果和我需要的预期结果。

原始ES结果:

{ "merchant_id": 1, "product_name": "Product 1" },
{ "merchant_id": 1, "product_name": "Product 2" },
{ "merchant_id": 1, "product_name": "Product 3" },
{ "merchant_id": 2, "product_name": "Product 4" },
{ "merchant_id": 2, "product_name": "Product 5" },
{ "merchant_id": 2, "product_name": "Product 6" }

预期ES结果:

{ "merchant_id": 1, "product_name": "Product 1" },
{ "merchant_id": 2, "product_name": "Product 4" },
{ "merchant_id": 1, "product_name": "Product 2" },
{ "merchant_id": 2, "product_name": "Product 5" },
{ "merchant_id": 1, "product_name": "Product 3" },
{ "merchant_id": 2, "product_name": "Product 6" }

最好是随机化结果:

{
"query": {
"function_score": {
"query": {
//your query
},
"functions": [
{
"random_score": {}
}
]
}
}
}

最新更新