我有几个关于弹性搜索脚本的问题,希望有人能帮助我。我需要从文档中添加几个参数_score
并按总值排序。首先,我将描述我拥有和需要添加的数据:
rating
- 一个从 1 到 9 的数字,duration_bucket
是一个从 0 到 2 的数字,rating_adj
[ {text
- text,如果传递的参数与这个值匹配,结果将更改为下一个值。adj
- 结果将被更改的数字。
}]
- 好吧,它
score
本身,通常这个值的范围是 1 到 4。
最初,我只是按以下顺序排序:
score
rating
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;
还有第一个问题。我尝试了两种选择。
- 通过
function score
并已按此分数排序。 - 直接通过
script sort
我没有注意到性能上的差异,这些方法有什么显着差异吗?
还有第二个问题。与通常的排序相比,使用此脚本时,处理器已完全加载。有什么方法可以优化脚本吗?还是全都与硬件有关?