ElasticSearch 中的中文分詞器以及索引基本操做詳解

@[toc] 本文是鬆哥所錄視頻教程的一個筆記,筆記簡明扼要,完整內容小夥伴們能夠參考視頻,視頻下載連接:https://pan.baidu.com/s/1NHoe0_52ut9fDUh0A6UQLA 提取碼: kzv7java

1.ElasticSearch 分詞器介紹

1.1 內置分詞器

ElasticSearch 核心功能就是數據檢索,首先經過索引將文檔寫入 es。查詢分析則主要分爲兩個步驟:git

  1. 詞條化:分詞器將輸入的文本轉爲一個一個的詞條流。
  2. 過濾:好比停用詞過濾器會從詞條中去除不相干的詞條(的,嗯,啊,呢);另外還有同義詞過濾器、小寫過濾器等。

ElasticSearch 中內置了多種分詞器能夠供使用。github

內置分詞器:正則表達式

分詞器 做用
Standard Analyzer 標準分詞器,適用於英語等。
Simple Analyzer 簡單分詞器,基於非字母字符進行分詞,單詞會被轉爲小寫字母。
Whitespace Analyzer 空格分詞器。按照空格進行切分。
Stop Analyzer 相似於簡單分詞器,可是增長了停用詞的功能。
Keyword Analyzer 關鍵詞分詞器,輸入文本等於輸出文本。
Pattern Analyzer 利用正則表達式對文本進行切分,支持停用詞。
Language Analyzer 針對特定語言的分詞器。
Fingerprint Analyzer 指紋分析儀分詞器,經過建立標記進行重複檢測。

1.2 中文分詞器

在 Es 中,使用較多的中文分詞器是 elasticsearch-analysis-ik,這個是 es 的一個第三方插件,代碼託管在 GitHub 上:微信

1.2.1 安裝

兩種使用方式:elasticsearch

第一種:post

  1. 首先打開分詞器官網:https://github.com/medcl/elasticsearch-analysis-ik。
  2. https://github.com/medcl/elasticsearch-analysis-ik/releases 頁面找到最新的正式版,下載下來。咱們這裏的下載連接是 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip。
  3. 將下載文件解壓。
  4. 在 es/plugins 目錄下,新建 ik 目錄,並將解壓後的全部文件拷貝到 ik 目錄下。
  5. 重啓 es 服務。

第二種:測試

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip

1.2.2 測試

es 重啓成功後,首先建立一個名爲 test 的索引:spa

接下來,在該索引中進行分詞測試:插件

1.2.3 自定義擴展詞庫

1.2.3.1 本地自定義

在 es/plugins/ik/config 目錄下,新建 ext.dic 文件(文件名任意),在該文件中能夠配置自定義的詞庫。

若是有多個詞,換行寫入新詞便可。

而後在 es/plugins/ik/config/IKAnalyzer.cfg.xml 中配置擴展詞典的位置:

1.2.3.2 遠程詞庫

也能夠配置遠程詞庫,遠程詞庫支持熱更新(不用重啓 es 就能夠生效)。

熱更新只須要提供一個接口,接口返回擴展詞便可。

具體使用方式以下,新建一個 Spring Boot 項目,引入 Web 依賴便可。而後在 resources/stastic 目錄下新建 ext.dic 文件,寫入擴展詞:

接下來,在 es/plugins/ik/config/IKAnalyzer.cfg.xml 文件中配置遠程擴展詞接口:

配置完成後,重啓 es ,便可生效。

熱更新,主要是響應頭的 Last-Modified 或者 ETag 字段發生變化,ik 就會自動從新加載遠程擴展辭典。

視頻筆記,在公衆號江南一點雨後臺回覆 elasticsearch04 獲取下載連接。

2. ElasticSearch 索引管理

微信公衆號江南一點雨後臺回覆 elasticsearch05 下載本筆記。

啓動一個 master 節點和兩個 slave 節點進行測試(參考第二集的視頻搭建)。

2.1 新建索引

2.1.1 經過 head 插件新建索引

在 head 插件中,選擇 索引選項卡,而後點擊新建索引。新建索引時,須要填入索引名稱、分片數以及副本數。

索引建立成功後,以下圖:

0、一、二、三、4 分別表示索引的分片,粗框表示主分片,細框表示副本(點一下框,經過 primary 屬性能夠查看是主分片仍是副本)。.kibana 索引只有一個分片和一個副本,因此只有 0。

2.1.2 經過請求建立

能夠經過 postman 發送請求,也能夠經過 kibana 發送請求,因爲 kibana 有提示,因此這裏採用 kibana。

建立索引請求:

PUT book

建立成功後,能夠查看索引信息:

須要注意兩點:

  • 索引名稱不能有大寫字母

  • 索引名是惟一的,不能重複,重複建立會出錯

2.2 更新索引

索引建立好以後,能夠修改其屬性。

例如修改索引的副本數:

PUT book/_settings
{
  "number_of_replicas": 2
}

修改爲功後,以下:

更新分片數也是同樣。

2.3 修改索引的讀寫權限

索引建立成功後,能夠向索引中寫入文檔:

PUT book/_doc/1
{
  "title":"三國演義"
}

寫入成功後,能夠在 head 插件中查看:

默認狀況下,索引是具有讀寫權限的,固然這個讀寫權限能夠關閉。

例如,關閉索引的寫權限:

PUT book/_settings
{
  "blocks.write": true
}

關閉以後,就沒法添加文檔了。關閉了寫權限以後,若是想要再次打開,方式以下:

PUT book/_settings
{
  "blocks.write": false
}

其餘相似的權限有:

  • blocks.write
  • blocks.read
  • blocks.read_only

2.4 查看索引

head 插件查看方式以下:

請求查看方式以下:

GET book/_settings

也能夠同時查看多個索引信息:

GET book,test/_settings

也能夠查看全部索引信息:

GET _all/_settings

2.5 刪除索引

head 插件能夠刪除索引:

請求刪除以下:

DELETE test

刪除一個不存在的索引會報錯。

5.6 索引打開/關閉

關閉索引:

POST book/_close

打開索引:

POST book/_open

固然,能夠同時關閉/打開多個索引,多個索引用 , 隔開,或者直接使用 _all 表明全部索引。

2.7 複製索引

索引複製,只會複製數據,不會複製索引配置。

POST _reindex
{
  "source": {"index":"book"},
  "dest": {"index":"book_new"}
}

複製的時候,能夠添加查詢條件。

2.8 索引別名

能夠爲索引建立別名,若是這個別名是惟一的,該別名能夠代替索引名稱。

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}

添加結果以下:

將 add 改成 remove 就表示移除別名:

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}

查看某一個索引的別名:

GET /book/_alias

查看某一個別名對應的索引(book_alias 表示一個別名):

GET /book_alias/_alias

能夠查看集羣上全部可用別名:

GET /_alias

最後,鬆哥還蒐集了 50+ 個項目需求文檔,想作個項目練練手的小夥伴不妨看看哦~

需求文檔地址:https://github.com/lenve/javadoc

相關文章
相關標籤/搜索