我有几个关于elasticsearch脚本的问题,希望有人能帮我。我需要将文档中的几个参数添加到 _score
按总值排序。首先,我将描述我拥有的数据以及需要添加的数据: rating
-从1到9的数字, duration_bucket
是从0到2的数字, rating_adj
[ { 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
我没有注意到性能上的差异,这些方法是否有显著差异?
第二个问题。使用此脚本时,处理器将完全加载,这与通常的排序不同。有没有什么方法可以优化脚本,或者都是关于硬件的?
暂无答案!
目前还没有任何答案,快来回答吧!