Elasticsearch中的脚本

问题描述

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

  • rating-1到9之间的数字,
  • duration_bucket是从0到2的数字。
  • rating_adj [ {
    • 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 我没有注意到性能上的差异,这些方法是否有显着差异?

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)