1

我有几个关于弹性搜索脚本的问题,希望有人能帮助我。我需要从文档中添加几个参数_score并按总值排序。首先,我将描述我拥有和需要添加的数据:

  • rating- 一个从 1 到 9 的数字,
  • duration_bucket是一个从 0 到 2 的数字,
  • rating_adj[ {
    • text- text,如果传递的参数与这个值匹配,结果将更改为下一个值。

    • adj- 结果将被更改的数字。

}]

  • 好吧,它score本身,通常这个值的范围是 1 到 4。

最初,我只是按以下顺序排序:

  1. score
  2. rating
  3. duration_bucket

但这给出了稍微不同的结果。因此,编写了一个小脚本来添加所有这些值。

def found = null;
if (params.text != null) {
  found = params._source['rating_adj'].find(item -> item.text == params.text);
}
def res = _score + params._source['duration_bucket'] + params._source['rating'];
if (found != null) {
  return res + found.adj
}
return res;

还有第一个问题。我尝试了两种选择。

  1. 通过function score并已按此分数排序。
  2. 直接通过script sort 我没有注意到性能上的差异,这些方法有什么显着差异吗?

还有第二个问题。与通常的排序相比,使用此脚本时,处理器已完全加载。有什么方法可以优化脚本吗?还是全都与硬件有关?

4

0 回答 0