全部产品
Search
文档中心

智能开放搜索 OpenSearch:通过命令行工具创建排序脚本

更新时间:Dec 27, 2023

排序脚本生命周期简介

排序脚本在opensearch中的生命周期描述如下:

  1. 创建排序脚本,创建脚本时需要指定应用名称、对应的版本ID和脚本名称,为了区分脚本名称不要和在opensearch控制台上创建的表达式名称相同。

  2. 上传脚本代码,脚本是使用opensearch提供的编程语言cava编写的代码,可以为未发布的脚本反复上传脚本代码。

  3. 编译脚本,上传脚本内容之后,可以通过编译指令查看是否有语法错误,用户可以对未发布的脚本进行反复编译。

  4. 发布脚本,脚本编译成功之后,如果需要应用到线上,即可对脚本进行发布操作,脚本发布之后不能再次上传代码和编译,只能删除。

  5. 删除脚本,对不需要的脚本可以进行删除,删除之前请确保查询不再使用相关排序脚本,否则查询会报错。

  6. 查看脚本,在上述各种操作过程中可以随时查看脚本状态。

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

在查询中使用脚本进行排序

  1. 首先确定脚本已经发布。

  2. 在查询中设置second_rank_name为脚本名称,为了区分脚本名称不要和在opensearch控制台上创建的表达式名称相同。

  3. 在查询中设置second_rank_type为cava_script。

  4. 如果脚本不存在,查询会有结果返回,但是会报错。