如何将来自Elasticsearch的结果乘以某个因子。例如,Elasticsearch的结果未乘以如下所示:
{ [ 1 => { score: 10 }, 2 => { score: 20 } ] }
我希望分数乘以4。该因子(此处为4)应该是可变的。
结果将是:
{ [ 1 => { score: 40 }, 2 => { score: 80 } ] }
这可能吗?如果可以,我该怎么做?
提前致谢。
最佳答案
您需要为此使用function score query。
在其中,您可以在脚本函数中将得分值乘以倍数(在脚本内部以_score的形式提供)
{
"query": {
"function_score": {
"query": {
// Query //
},
"functions": [
{
"script_score": {
"script": "_score * boostFactor",
"params": {
"boostFactor": 4
}
}
}
],
"score_mode": "sum",
"boost_mode": "replace"
}
}
}
使用boost_mode作为replace,将查询给出的分数替换为我们计算出的函数分数。
关于elasticsearch - 如何将Elasticsearch的结果乘以一个因子?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28685867/