@[toc] 本文是鬆哥所錄視頻教程的一個筆記,筆記簡明扼要,完整內容小夥伴們能夠參考視頻,視頻下載連接:https://pan.baidu.com/s/1NHoe0_52ut9fDUh0A6UQLA 提取碼: kzv7java
1.ElasticSearch 分詞器介紹
1.1 內置分詞器
ElasticSearch 核心功能就是數據檢索,首先經過索引將文檔寫入 es。查詢分析則主要分爲兩個步驟:git
- 詞條化:分詞器將輸入的文本轉爲一個一個的詞條流。
- 過濾:好比停用詞過濾器會從詞條中去除不相干的詞條(的,嗯,啊,呢);另外還有同義詞過濾器、小寫過濾器等。
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
- 首先打開分詞器官網:https://github.com/medcl/elasticsearch-analysis-ik。
- 在 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。
- 將下載文件解壓。
- 在 es/plugins 目錄下,新建 ik 目錄,並將解壓後的全部文件拷貝到 ik 目錄下。
- 重啓 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+ 個項目需求文檔,想作個項目練練手的小夥伴不妨看看哦~