全部產品
Search
文件中心

OpenSearch:通過命令列工具建立排序指令碼

更新時間:Jul 13, 2024

排序指令碼生命週期簡介

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