排序脚本生命周期简介
排序脚本在opensearch中的生命周期描述如下:
创建排序脚本,创建脚本时需要指定应用名称、对应的版本ID和脚本名称,为了区分脚本名称不要和在opensearch控制台上创建的表达式名称相同。
上传脚本代码,脚本是使用opensearch提供的编程语言cava编写的代码,可以为未发布的脚本反复上传脚本代码。
编译脚本,上传脚本内容之后,可以通过编译指令查看是否有语法错误,用户可以对未发布的脚本进行反复编译。
发布脚本,脚本编译成功之后,如果需要应用到线上,即可对脚本进行发布操作,脚本发布之后不能再次上传代码和编译,只能删除。
删除脚本,对不需要的脚本可以进行删除,删除之前请确保查询不再使用相关排序脚本,否则查询会报错。
查看脚本,在上述各种操作过程中可以随时查看脚本状态。
sortscript
sortscript是一个python命令行工具(python版本大于2.7),方便用户创建、维护、发布、删除排序脚本,用户可以通过访问下载地址获取。sortscript在使用sortscript之前需要用户在tools_conf.py中配置自己的AK与secret等信息。
使用sortscript创建排序脚本示例:
1.创建脚本
python ./sortscript create --appName script_test --appVersionId 12345678 --scriptName script1
2.上传脚本代码,目录中有BasicSimilarityScorer.cava 和 IntelligenceAlgorithm.cava,cava具体的语法规则可以参考cava手册。
python ./sortscript updatecontent --appName script_test --appVersionId 12345678 --scriptName script1 --scriptFileName BasicSimilarityScorer.cava --localFile ./BasicSimilarityScorer.cava
python ./sortscript updatecontent --appName script_test --appVersionId 12345678 --scriptName script1 --scriptFileName IntelligenceAlgorithmScorer.cava --localFile ./IntelligenceAlgorithmScorer.cava
3.编译脚本,编译过程中可以能报一些语法错误,请根据提示进行修改。
python ./sortscript compile --appName script_test --appVersionId 12345678 --scriptName script1
4.发布脚本,确定脚本不需要再做修改之后,即可进行发布。
python ./sortscript release --appName script_test --appVersionId 12345678 --scriptName script1
5.查看脚本,如果指定scriptName表名需要查看某个脚本,否则会list出版本下的所有脚本。
python ./sortscript list --appName script_test --appVersionId 12345678 --scriptName script1
python ./sortscript list --appName script_test --appVersionId 12345678
6.查看文件内容。
python ./sortscript getcontent --appName script_test --appVersionId 12345678 --scriptName script1 --scriptFileName BasicSimilarityScorer.cava
python ./sortscript getcontent --appName script_test --appVersionId 12345678 --scriptName script1 --scriptFileName IntelligenceAlgorithmScorer.cava
7.删除文件。
python ./sortscript deleteScriptFile --appName script_test --appVersionId 12345678 --scriptName script1 --scriptFileName BasicSimilarityScorer.cava
python ./sortscript deleteScriptFile --appName script_test --appVersionId 12345678 --scriptName script1 --scriptFileName IntelligenceAlgorithmScorer.cava
8.删除脚本,确定查询中没有在使用脚本时,在进行删除。
python ./sortscript delete --appName script_test --appVersionId 12345678 --scriptName script1
在查询中使用脚本进行排序
首先确定脚本已经发布。
在查询中设置second_rank_name为脚本名称,为了区分脚本名称不要和在opensearch控制台上创建的表达式名称相同。
在查询中设置second_rank_type为cava_script。
如果脚本不存在,查询会有结果返回,但是会报错。