leonard_mo 2023-03-22 15:18 采纳率: 0%
浏览 25

关于ES自定义script painless的问题

最近有一个关于ES的排序问题,想问下dl们:

目前我的排序是用es的painless的自定义排序去做的,但是我在脚本return的时候加了一个double类型的数,接口性能从平均500ms,慢到了1s~2s,非常奇怪,想问问dl们有没有什么解决方案

操作前的脚本:

double total = doc['score1'].value;
long m=params.m
total /= Math.log(m);
total+=doc['score2'].value;
return Math.rint(total*10000)/10000;

操作后的脚本

double total = doc['score1'].value;
long m=params.m
total /= Math.log(m);
total+=doc['score2'].value+doc['score3'].value; 
#这里就多了一个score3 是double类型的,score1也是double, score2是long
return Math.rint(total*10000)/10000;

查了很多也没有发现是哪里的问题,qq各位dl帮忙分析下

  • 写回答

3条回答 默认 最新

  • AKA.Dennis.Li 2023-03-22 15:44
    关注

    有可能是添加了double类型的数导致排序变慢。导致执行时间延长。

    可以尝试

    1. 将排序逻辑移动到应用程序代码中,避免使用painless脚本。

    2. 调整您的脚本以减少处理的数据量。例如,您可以尝试仅将需要排序的字段传递到脚本中,并在脚本中仅对这些字段进行操作。另外,您还可以尝试使用其他类型的排序,如基于文档评分的排序(如ES的默认排序方式)或者函数得分等。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月22日

悬赏问题

  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 时间序列预测算法 预测结果出现负值
  • ¥15 在win系统Django虚拟环境下载mysqlclient报错
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼