1.ElasticSearch 分詞器介紹
1.1 內置分詞器
ElasticSearch 核心功能就是數據檢索,首先通過索引將文檔寫入 es。查詢分析則主要分為兩個步驟:
詞條化:分詞器將輸入的文本轉為一個一個的詞條流。過濾:比如停用詞過濾器會從詞條中去除不相干的詞條(的,嗯,啊,呢);另外還有同義詞過濾器、小寫過濾器等。ElasticSearch 中內置了多種分詞器可以供使用。
內置分詞器:
1.2 中文分詞器
在 Es 中,使用較多的中文分詞器是 elasticsearch-analysis-ik,這個是 es 的一個第三方插件,代碼託管在 GitHub 上。
1.2.1 安裝
執行如下命令即可:
1.2.2 測試
es 重啟成功後,首先創建一個名為 test 的索引:
接下來,在該索引中進行分詞測試:
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 就會自動重新加載遠程擴展辭典。
2. ElasticSearch 索引管理
啟動一個 master 節點和兩個 slave 節點進行測試(參考第二集的視頻搭建)。
2.1 新建索引
2.1.1 通過 head 插件新建索引
在 head 插件中,選擇 索引選項卡,然後點擊新建索引。新建索引時,需要填入索引名稱、分片數以及副本數。
索引創建成功後,如下圖:
0、1、2、3、4 分別表示索引的分片,粗框表示主分片,細框表示副本(點一下框,通過 primary 屬性可以查看是主分片還是副本)。.kibana 索引只有一個分片和一個副本,所以只有 0。
2.1.2 通過請求創建
可以通過 postman 發送請求,也可以通過 kibana 發送請求,由於 kibana 有提示,所以這裡採用 kibana。
創建索引請求:
PUTbook
創建成功後,可以查看索引信息:
需要注意兩點:
索引名稱不能有大寫字母
索引名是唯一的,不能重複,重複創建會出錯
2.2 更新索引
索引創建好之後,可以修改其屬性。
例如修改索引的副本數:
修改成功後,如下:
更新分片數也是一樣。
2.3 修改索引的讀寫權限
索引創建成功後,可以向索引中寫入文檔:
寫入成功後,可以在 head 插件中查看:
默認情況下,索引是具備讀寫權限的,當然這個讀寫權限可以關閉。
例如,關閉索引的寫權限:
關閉之後,就無法添加文檔了。關閉了寫權限之後,如果想要再次打開,方式如下:
其他類似的權限有:
blocks.writeblocks.readblocks.read_only2.4 查看索引
head 插件查看方式如下:
請求查看方式如下:
GETbook/_settings
也可以同時查看多個索引信息:
GETbook,test/_settings
也可以查看所有索引信息:
GET_all/_settings
2.5 刪除索引
head 插件可以刪除索引:
請求刪除如下:
DELETEtest
刪除一個不存在的索引會報錯。
5.6 索引打開/關閉
關閉索引:
POSTbook/_close
打開索引:
POSTbook/_open
當然,可以同時關閉/打開多個索引,多個索引用 , 隔開,或者直接使用 _all 代表所有索引。
2.7 複製索引
索引複製,只會複製數據,不會複製索引配置。
複製的時候,可以添加查詢條件。
2.8 索引別名
可以為索引創建別名,如果這個別名是唯一的,該別名可以代替索引名稱。
添加結果如下:
將 add 改為 remove 就表示移除別名:
查看某一個索引的別名:
GET/book/_alias
查看某一個別名對應的索引(book_alias 表示一個別名):
GET/book_alias/_alias
可以查看集群上所有可用別名:
GET/_alias