阿里云Elasticsearch Serverless(簡稱ES Serverless)應用中默認安裝elasticsearch-analysis-dynamic-synonym插件,該插件支持動態加載同義詞文件,本文介紹如何在ES Serverless應用中實現同義詞動態更新。
操作步驟
同義詞文件準備。
準備一個UTF-8編碼格式的同義詞TXT文件,并將同義詞文件放在OSS中。同義詞文件中的內容如下:
西紅柿,番茄,小西紅柿,tomato 土豆,馬鈴薯,洋芋,potato 肯德基,KFC
登錄阿里云ES Serverless應用的Kibana控制臺。
具體操作,請參見通過Kibana使用Serverless應用。
在Kibana控制臺,單擊,選擇
。在Console頁簽中,執行以下命令,創建索引并配置settings,在filter下調用
dynamic_synonym
接口,通過synonyms_path
實現遠程詞典加載。# 創建索引時需要配置settings和mapping # 用戶在filter下調用dynamic_synonym,通過synonyms_path實現遠程詞典加載 PUT /test { "settings": { "index": { "analysis": { "analyzer": { "my_analyzer": { "type": "custom", "tokenizer": "ik_smart", "filter": ["remote_synonym"] } }, "filter": { "remote_synonym" : { "type" : "dynamic_synonym", "synonyms_path" : "https://****/synonym.txt", "interval": 30 } } } } }, "mappings": { "properties": { "title": { "type": "text", "analyzer": "my_analyzer" } } } }
filter中的參數說明如下,更多參數說明請參見Dynamic Synonym for ElasticSearch。
參數
說明
type
詞典文件類型,支持dynamic_synonym和dynamic_synonym_graph類型。
synonyms_path
詞典配置文件路徑或URL。直接獲取OSS中同義詞文件的url,獲取方式請參見私有文件。
說明建議存儲詞典文件的OSS與Serverless應用在同一地域。
interval
刷新詞典的時間間隔,默認:60,單位為秒。
驗證同義詞配置。
通過
_analyze
獲取KFC
分詞效果。# 驗證同義詞配置 GET test/_analyze { "analyzer": "my_analyzer", "text": "KFC" }
執行成功后,返回結果如下。
# 返回結果 { "tokens" : [ { "token" : "肯德基", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 0 }, { "token" : "kfc", "start_offset" : 0, "end_offset" : 3, "type" : "ENGLISH", "position" : 0 } ] }
在OSS同義詞文件中更新詞典內容。
同義詞文件中的內容如下:
西紅柿,番茄,小西紅柿,tomato 土豆,馬鈴薯,洋芋,potato 肯德基,KFC,Kentucky Fried Chicken
在Kibana中執行以下代碼,驗證分詞效果。
# 驗證同義詞配置 GET test/_analyze { "analyzer": "my_analyzer", "text": "KFC" }
執行成功后,返回結果如下。
{ "tokens" : [ { "token" : "kfc", "start_offset" : 0, "end_offset" : 3, "type" : "ENGLISH", "position" : 0 }, { "token" : "肯德基", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 0 }, { "token" : "kentucky", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 0 }, { "token" : "fried", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 1 }, { "token" : "chicken", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 2 } ] }
常見問題
Q:動態同義詞地址出錯,如何處理?
A:請根據以下步驟處理。
驗證配置參數:
檢查您的索引映射(mapping)或分析器設置(analyzer settings),確保synonym_path等插件相關參數被正確配置。
檢查同義詞文件的編碼方式是否為UTF-8。
確認同義詞地址設置:
檢查您的插件配置,確保指向存儲同義詞文件的地址(阿里云對象存儲服務OSS的URL)正確。提供的同義詞地址應正確無誤,且文件可訪問。同義詞詞典文件在OSS中,獲取該文件的URL,請參見私有文件。
聯系技術支持:
若自行排查后問題仍未解決,或者不確定如何在阿里云ES Serverless環境中操作,請提交工單聯系阿里云技術支持,提供詳細的錯誤信息和已采取的排查步驟,阿里云技術支持將為您提供針對性的幫助。