如何将来自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/

10-16 22:20