@[toc]
本文是松哥所錄視頻教程的一個筆記款慨,筆記簡明扼要味混,完整內容小伙伴們可以參考視頻产雹,視頻下載鏈接:https://pan.baidu.com/s/1NHoe0_52ut9fDUh0A6UQLA 提取碼: kzv7
1.ElasticSearch 分詞器介紹
1.1 內置分詞器
ElasticSearch 核心功能就是數據檢索,首先通過索引將文檔寫入 es翁锡。查詢分析則主要分為兩個步驟:
- 詞條化:分詞器將輸入的文本轉為一個一個的詞條流蔓挖。
- 過濾:比如停用詞過濾器會從詞條中去除不相干的詞條(的,嗯盗誊,啊时甚,呢);另外還有同義詞過濾器哈踱、小寫過濾器等荒适。
ElasticSearch 中內置了多種分詞器可以供使用。
內置分詞器:
分詞器 | 作用 |
---|---|
Standard Analyzer | 標準分詞器开镣,適用于英語等刀诬。 |
Simple Analyzer | 簡單分詞器,基于非字母字符進行分詞邪财,單詞會被轉為小寫字母陕壹。 |
Whitespace Analyzer | 空格分詞器。按照空格進行切分树埠。 |
Stop Analyzer | 類似于簡單分詞器糠馆,但是增加了停用詞的功能。 |
Keyword Analyzer | 關鍵詞分詞器怎憋,輸入文本等于輸出文本又碌。 |
Pattern Analyzer | 利用正則表達式對文本進行切分,支持停用詞绊袋。 |
Language Analyzer | 針對特定語言的分詞器毕匀。 |
Fingerprint Analyzer | 指紋分析儀分詞器,通過創(chuàng)建標記進行重復檢測癌别。 |
1.2 中文分詞器
在 Es 中皂岔,使用較多的中文分詞器是 elasticsearch-analysis-ik,這個是 es 的一個第三方插件展姐,代碼托管在 GitHub 上:
1.2.1 安裝
兩種使用方式:
第一種:
- 首先打開分詞器官網: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 重啟成功后舒憾,首先創(chuàng)建一個名為 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
字段發(fā)生變化,ik 就會自動重新加載遠程擴展辭典病瞳。
視頻筆記杜恰,在公眾號江南一點雨后臺回復 elasticsearch04 獲取下載鏈接。
2. ElasticSearch 索引管理
微信公眾號江南一點雨后臺回復 elasticsearch05 下載本筆記仍源。
啟動一個 master 節(jié)點和兩個 slave 節(jié)點進行測試(參考第二集的視頻搭建)心褐。
2.1 新建索引
2.1.1 通過 head 插件新建索引
在 head 插件中,選擇 索引選項卡笼踩,然后點擊新建索引逗爹。新建索引時,需要填入索引名稱嚎于、分片數以及副本數掘而。
索引創(chuàng)建成功后,如下圖:
0于购、1袍睡、2、3肋僧、4 分別表示索引的分片斑胜,粗框表示主分片,細框表示副本(點一下框嫌吠,通過 primary 屬性可以查看是主分片還是副本)止潘。.kibana 索引只有一個分片和一個副本,所以只有 0辫诅。
2.1.2 通過請求創(chuàng)建
可以通過 postman 發(fā)送請求凭戴,也可以通過 kibana 發(fā)送請求,由于 kibana 有提示炕矮,所以這里采用 kibana么夫。
創(chuàng)建索引請求:
PUT book
創(chuàng)建成功后者冤,可以查看索引信息:
需要注意兩點:
- 索引名稱不能有大寫字母
- 索引名是唯一的,不能重復档痪,重復創(chuàng)建會出錯
2.2 更新索引
索引創(chuàng)建好之后譬嚣,可以修改其屬性。
例如修改索引的副本數:
PUT book/_settings
{
"number_of_replicas": 2
}
修改成功后钞它,如下:
更新分片數也是一樣。
2.3 修改索引的讀寫權限
索引創(chuàng)建成功后殊鞭,可以向索引中寫入文檔:
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 索引別名
可以為索引創(chuàng)建別名,如果這個別名是唯一的租漂,該別名可以代替索引名稱阶女。
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+ 個項目需求文檔哩治,想做個項目練練手的小伙伴不妨看看哦~