elasticsearch5.x版本,分布式ik+pinyin分詞器
一,安裝es綁定區域網路ip
elasticsearch目前的三大類版本,每個版本有不同,有很多部落格是介紹的2.x版本的,但是2.x版本的官方不再維護,搭建完了以後,maven中也沒有對應的jar,隻能自己在url中測試(此部落格隻說關于java的,其他語言不知道)。點選打開連結選擇es版本,如果你要經常用,基本上一定會用pinyin和ik分詞,(預設的标準分詞器用的是單個字分詞)。推介下載下傳5.3.3或者5.6.8隻有這兩個版本在git中的插件好用一點。
下載下傳es後,在config/elasticsearch.yml中添加配置
http.cors.enabled: true
http.cors.allow-origin: "*"
以上兩行是head插件的配置,5.x版本開始,head插件必須以新的程序的形式開啟,
關于head插件的安裝,請去搜其他的部落格, head插件是用node.js寫的,啟動的時候npm 指令資料源最好用阿裡的
資料源
cluster.name: fc 叢集名稱
node.name: master 節點名字
node.master: true 是否是叢集主節點
network.host: 主節點的ip 單節點情況下如果不配,預設是綁定localhost
注意,如果要綁定除localhost外的其他ip,在5.x版本下會報錯(2.x版本不會),需要修改如下配置
sudo vim /etc/security/limits.conf
soft nofile 65536 可打開的檔案描述的最大數(軟限制)
hard nofile 131072 可打開檔案面熟的最大數(硬限制)
soft nproc 2048 單個使用者可用的最大程序數(軟限制)
hard nproc 4096 單個使用者可用的最大程序數(軟限制)
儲存以後退出來
sysctl -p 重新整理
在5.x版本下這個配置檔案下如果不改,就不能配置ip位址,隻能綁定127.0.0.1
配置完成後,進入elasticsearch/bin下,啟動./elasticsearch 建議初期最好不要用守護程序,以便看到
它報的錯誤資訊,然後會列印一個警告,但是叢集還是能正确運作,關于記憶體大小設定的警告
輸入 sudo vim /etc/sysctl.conf 添加
vm.max_map_count=655360 記憶體大小
儲存以後退出來
sysctl -p 重新整理
這樣單機下就可以綁定ip不報錯誤
二,安裝ik 中文分詞器
https://github.com/medcl/elasticsearch-analysis-ik,下載下傳ik分詞插件。
解壓或進入elasticsearch-analysis-ik-5.x ,然後用maven打包 指令是 mvn package
會在目錄下生成target檔案夾,進入target/releases 解壓zip檔案,ik分詞器的jar和配置檔案會在elasticsearch下
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lcd3aq1UNJpXTw0keYhnRzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYvwFd4VGdvwlMvw1ayFWbyVGdhd3P1cDNzkzM4EDOyMDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
然後在自己的es的plugins(2.x版本的好像沒有這個檔案夾,要自己建立)下建立ik檔案夾,然後将上面
elasticsearch-analysis-pinyin-5.x/target/releases/elasticsearch/ 下的檔案都複制到ik下,
退出重新開機es 在postman中選擇put請求 輸入http://esip:9200/index 建立一個索引 其中esip是你綁定的ip位址
(postman是谷歌的一個http模拟插件,去谷歌插件中心添加即可)
在url下輸入 http://esip:9200/index/_analyze?text=中華人民共和國&analyzer=ik_max_word
注意: 這裡的參數,在2.x版本下analyzer隻需要輸入ik就行了,但是在5.x版本下必須要輸入ik_max_word或者
ik_smart 否則會報錯
"error": {
"root_cause": [
{
"type": "remote_transport_exception",
"reason": "[master][10.0.0.30:9300][indices:admin/analyze[s]]"
}
],
"type": "illegal_argument_exception",
"reason": "failed to find analyzer [ik]"
},
"status": 400
在6.x版本下,不能在url 或者在postman下這樣測試分詞結果,哪怕是預設的分詞器,也不能測,都會報錯
三 安裝pinyin插件
位址https://github.com/medcl/elasticsearch-analysis-pinyin 下載下傳對應的5.x版本,安裝過程和ik分詞器一樣,下載下傳解壓, 在 elasticsearch-analysis-pinyin-5.x 下 執行mvn package 打包 過程入ik
在plugins 下建立pinyin 檔案夾,将/target/releases/elasticsearch内容全部複制進去, 重新開機es (注意,在安裝.中,可能你下的插件是2.x版本,maven打包解壓的是1.x版本,啟動es的時候出現類似 Plugin [analysis-pinyin] is incompatible with Elasticsearch [5.3.3]. Was designed for version [5.3.5]的錯誤,在同一個大版本内,修改對應版本配置
sudo vim ./plugin-descriptor.properties
修改成對應的版本
elasticsearch.version = 5.3.3 自己的es版本
改成對應的版本即可
)
啟動完畢後在postman中
用get請求 輸入 http://esip:9200/index/_analyze?text=中華人民共和國&analyzer=pinyin
四,搭建完全分布式叢集
為了友善,建議現在系統hosts檔案中添加對應的ip
sudo vim /etc/hosts
添加 主節點的對應ip名稱(在主節點所在的電腦)
10.0.0.30 esip
從節點電腦中添加 10.0.0.16
将已經安裝好的單機es複制到其他電腦, 在修改confing/elasticsearch.yml 的配置
主節點對應配置如下, 主節點ip為 10.0.0.30 在hosts中配置了esip
一下兩個是head插件跨域的參數
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: fc 叢集名字
node.name: master 節點名字
node.master: true 是否為主節點
node.data: true 該節點是否用來存儲資料
network.host: esip 綁定主節點的ip
discovery.zen.ping.unicast.hosts: ["esip"] 在叢集中的電腦的ip
首先在從節點電腦的 /etc/hosts中配置了 10.0.0.16 esslave
再去從節點的elasticsearch.yml中配置
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: fc 叢集名字
node.name: salve 節點名字
node.master: false 是否為主節點
node.data: true 該節點是否用來存儲資料
network.host: esip 綁定主節點的ip
discovery.zen.ping.unicast.hosts: [" esslave"] 在叢集中的電腦的ip(自己的ip)
配置中的http.port用預設即可 ,如果要配置,主從節點不能用同一個端口,雖然不再同一台電腦上,但是也不能用相同的端口
先啟動主節點,在啟動從節點,head插件中如下
如果發現從節點報錯 ,記得将從節點 data檔案夾下的檔案全部删掉