全部產品
Search
文件中心

Elasticsearch:使用IK分詞外掛程式(analysis-ik)

更新時間:Oct 25, 2024

IK分詞外掛程式(analysis-ik)是Elasticsearch(簡稱ES)的擴充外掛程式,提供了基於詞典的分詞能力,預設不能卸載。所有類型的詞典均預設使用IK分詞外掛程式的原生設定檔,通過更新詞典,您可以修改IK分詞外掛程式的預設詞庫或添加新的詞庫,改善分詞效果,讓分詞結果更加符合業務情境需求。在開源外掛程式的基礎上,IK分詞外掛程式擴充支援了通過Object Storage Service動態載入詞典檔案的功能。

前提條件

叢集狀態為正常,可在執行個體的基本資料頁面查看。具體操作請參見查看執行個體的基本資料

說明

部分低版本執行個體的介面和支援的功能可能與本文有區別,請以控制台為準。

IK分詞外掛程式介紹

IK分詞器的分詞規則

IK分詞外掛程式的分詞器的分詞規則包括ik_smart和ik_max_word兩種:

  • ik_max_word:將文本按照最細粒度進行拆分,適合術語查詢。

  • ik_smart:將文本按照粗粒度進行拆分,適合短語查詢。

支援的詞典類型

IK分詞外掛程式支援以下幾種詞典類型:

詞典類型

詞典說明

詞典檔案要求

更新方式

主詞典(main.dic)

IK分詞外掛程式原生內建的主詞典包含27萬多條中文詞語。

如果在建立ES索引時指定了主分詞詞典,向叢集中寫入資料時,資料中包含主分詞詞典中的詞,叢集就會建立索引,並且該索引能通過關鍵詞被查詢到。

每行一個詞,儲存為UTF-8編碼的DIC檔案。

停用詞詞典(stopword.dic)

IK分詞外掛程式原生內建的停用詞詞典中包含英文的停用詞,例如a、the、and、at、but等。

如果在建立ES索引時指定了停用詞詞典,向索引中寫入資料時,資料中包含的停用詞詞典中的詞會被過濾掉,不會出現在倒排索引中。

介詞詞典(preposition.dic)

存放介詞

-

IK詞典冷更新

量詞詞典(quantifier.dic)

存放單位相關的詞和量詞。

suffix.dic

存放尾碼

-

不支援更新

surname.dic

存放中國的姓氏。

支援的詞典更新方式

阿里雲ES的IK分詞外掛程式支援IK詞典冷更新IK詞典熱更新

更新方式

生效方式

載入方式

推薦應用情境

冷更新

對整個叢集的詞典進行更新,詞典生效會觸發叢集重啟。

系統將上傳的詞典檔案傳送到ES節點上,然後重啟ES節點載入詞典檔案。

  • 如果您需要替換預設詞典檔案或刪除預設詞典檔案中的內容,使用IK詞典冷更新。

  • 如果您需要更新介詞詞典或量詞詞典檔案,使用IK詞典冷更新。

熱更新

  • 上傳同名詞典檔案時,不會觸發叢集重啟,叢集會在運行過程中直接載入詞庫。

  • 第一次上傳詞典檔案、新增或刪除詞典檔案、詞典檔案名稱發生變化時,會觸發叢集重啟,叢集需要重新載入詞典的配置。

  • 僅詞典檔案內容發生變化時,ES節點會自動載入上傳的詞典檔案,實現詞典的更新操作。

  • 如果詞典檔案清單或詞典名稱發生變化,叢集需要重啟重新載入詞典的配置。

如果您需要擴充主詞典或停用詞詞典檔案,或變更擴充詞典檔案,建議使用IK詞典熱更新。

更新詞典

對於已經配置了IK分詞的索引,IK詞典冷更新或熱更新完成後,將只對新資料(包含新增資料和更新後的資料)生效。如果您希望對全部資料生效,需要重建索引。

IK詞典冷更新

您可以通過冷更新方式替換詞典檔案,替換過程需要重啟ES叢集。

警告

冷更新操作會觸發叢集重啟,為保證您的業務不受影響,請在業務低峰期進行操作。

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 在左側導覽列,選擇配置與管理 > 外掛程式配置

  5. 系統預設外掛程式列表頁簽,找到analysis-ik外掛程式,在其右側操作列中單擊冷更新

  6. IK詞庫配置-冷更新控制台,單擊目標詞典右側的編輯,添加或替換對應的詞典檔案後單擊儲存

    詞典檔案更新方式包括:

    • 上傳本地檔案:單擊檔案上傳地區上傳詞典檔案,或拖拽詞典檔案到上傳地區。

    • 上傳OSS檔案:輸入Bucket名稱和詞典檔案名稱,單擊添加

      • Bucket與阿里雲ES執行個體需要在同一地區。

      • 不支援自動同步更新詞典檔案。源端OSS中的詞典檔案內容發生變化後,需要通過冷更新使之生效。

    說明
  7. 單擊確定

    ES執行個體重啟成功後,即詞典檔案更新成功。

  8. (可選)登入ES執行個體的Kibana控制台,測試詞典是否生效。

    說明

    登入Kibana控制台,請參見登入Kibana控制台

    在Kibana控制台的開發工具(Dev Tools)上執行以下代碼:

    GET _analyze
    {
      "analyzer": "ik_smart",
      "text": ["您詞典中包含的詞"]
    }

IK詞典熱更新

您可以通過擴充詞典更新的方式擴充主詞典和停用詞詞典。如果詞典檔案名稱和文檔數量不發生變化,則不需要重啟ES叢集。

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 在左側導覽列,選擇配置與管理 > 外掛程式配置

  5. 系統預設外掛程式列表頁簽,找到analysis-ik外掛程式,在其右側的操作列中單擊熱更新

  6. IK詞庫配置-熱更新控制台,單擊目標詞典右側的編輯,上傳對應的詞典檔案後單擊儲存

    詞典檔案更新方式包括:

    • 上傳本地檔案:單擊檔案上傳地區上傳詞典檔案,或拖拽詞典檔案到上傳地區。

    • 上傳OSS檔案:輸入Bucket名稱和詞典檔案名稱,單擊添加

      • Bucket與阿里雲ES執行個體需要在同一地區。

      • 不支援自動同步更新詞典檔案。源端OSS中的詞典檔案內容發生變化後,需要通過熱更新使之生效。

    說明
    • 詞典檔案尾碼必須是.dic,檔案名稱可以包含大小寫字母、數字和底線,長度不超過30個字元。

    • 如果您需要修改已上傳的詞典檔案內容,可單擊目標詞典檔案右側的下載按鈕表徵圖,下載、修改詞典檔案,然後刪除源詞典檔案並重新上傳。

    • 支援上傳多個詞典檔案,僅詞典檔案內容發生變化時叢集不需要重啟,檔案名稱或檔案數量發生變化時需要叢集重啟。為保證您的業務不受影響,請在業務低峰期進行操作,等待重啟結束後,詞典會自動生效。

  7. 在頁面底部,單擊確定

    阿里雲ES節點上的外掛程式具有自動載入詞典檔案的功能,但每個節點擷取詞典檔案的可能時間不同,請耐心等待詞典生效。

  8. (可選)登入ES執行個體的Kibana控制台,測試詞典是否生效。

    說明

    登入Kibana控制台,請參見登入Kibana控制台

    為保證準確性,在Kibana控制台的開發工具(Dev Tools)上多次執行以下命令進行驗證。

    GET _analyze
    {
      "analyzer": "ik_smart",
      "text": ["您詞典中包含的詞"]
    }

相關文檔