排序指令碼生命週期簡介
排序指令碼在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。
如果指令碼不存在,查詢會有結果返回,但是會報錯。