Elasticsearch6.2.3及其head外掛安裝 中文分詞 elasticsearch-analysis-ik 拼音分詞 同義詞分詞
1.下載並解壓elasticsearch
官網 http://www.elastic.co/downloads/elasticsearch
解壓 tar -zxvf elasticsearch-6.2.3.tar.gz
2.修改配置elasticsearch.yml檔案
單機版配置
# 叢集的名字(預設elasticsearch) cluster.name: snjx-search # 節點名字 node.name: master # 資料儲存目錄(多個路徑用逗號分隔) path.data: /usr/local/snjx/datas # 日誌目錄 path.logs: /usr/local/snjx/logs #本機的ip地址 network.host: 192.168.1.111 #設定叢集中master節點的初始列表,可以通過這些節點來自動發現新加入叢集的節點 discovery.zen.ping.unicast.hosts: ["192.168.1.111:9300"] # 設定節點間互動的tcp埠(叢集),(預設9300) transport.tcp.port: 9300 # 監聽埠(預設) http.port: 9200 # 增加引數,使head外掛可以訪問es http.cors.enabled: true http.cors.allow-origin: "*
叢集配置
cluster.name: snjx-search node.name: node-5 #如果是master節點設定成true node.master: false #如果是data節點設定成true node.data: true path.data: /usr/local/snjx/datas path.logs: /usr/local/snjx/logs network.host: master http.port: 9200 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["10.20.23.29:9300", "10.20.23.38:9300","10.20.23.41:9300"] discovery.zen.minimum_master_nodes: 1 bootstrap.memory_lock: false bootstrap.system_call_filter: false #解決跨域問題 http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-credentials: true
config/ jvm.options配置
預設1G 由於是筆記本搭建虛機,配置有限僅供學習使用 特設定為512M 土豪請無視
如果進行了datas.logs 自定義路徑
search 使用者需要賦權
3.啟動es
如果是用root賬號啟動,會報以下錯誤
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
-
這是出於系統安全考慮設定的條件。由於ElasticSearch可以接收使用者輸入的指令碼並且執行,為了系統安全考慮,
建議建立一個單獨的使用者用來執行ElasticSearch -
建立search使用者組及search使用者
groupadd search useradd search -g search -p search
- 1
- 2
-
更改elasticsearch資料夾及內部檔案的所屬使用者及組為search:search
cd /usr/local/snjx/elasticsearch chown -R search:search elasticsearch-6.2.3
- 1
- 2
-
切換到elsearch使用者再啟動
su search
cd /usr/local/snjx/elasticsearch/elasticsearch-6.2.3/bin
-
./elasticsearch 正常啟動
-
./elasticsearch -d 後臺啟動
4.http訪問192.168.1.111:9200
5.head外掛下載
6.安裝nodejs head外掛依賴node環境
配置下環境變數,編輯vim /etc/profile新增
#node
export NODE_HOME=/usr/local/snjx/node/node-v9.10.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
執行 source /etc/profile 重新整理檔案
7.安裝grunt
grunt是基於Node.js的專案構建工具,可以進行打包壓縮、測試、執行等等的工作,head外掛就是通過grunt啟動
cd /usr/local/snjx/elasticsearch/elasticsearch-head-master
npm install -g grunt-cli //執行後會生成node_modules資料夾
檢查是否安裝成功
修改hostname vim /etc/hosts
重啟生效 檢視是否修改成功
hostname
8.修改head外掛原始碼
修改伺服器監聽地址:Gruntfile.js
在keepalive:true 下面新增 hostname: '*'
修改連線地址:_site/app.js
9.執行head
在elasticsearch-head-master目錄下
npm install(安裝下載下來的包)
grunt server
後臺啟動elasticsearch-head
nohup grunt server &
nohup grunt server &exit
如果想關閉head外掛,查詢程序命令:
ps aux|grep head
10.訪問http://ip:9100
注意 如果 啟動報錯
這裡面很明顯的有兩個引數的值太小
1.max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
修改/etc/security/limits.conf檔案,新增或修改如下行:
* hard nofile 65536
* soft nofile 65536
2.max virtual memory areas vm.max......
修改 /etc/sysctl.conf 檔案,新增如下行:
vm.max_map_count=262144
修改好了以後,然後sysctl -p使系統配置生效,呼叫sysctl -a檢視,發現引數並沒有變動,要重啟才可以。
中文分詞安裝
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.3/elasticsearch-analysis-ik-6.2.3.zip
官網地址 https://github.com/medcl/elasticsearch-analysis-ik
拼音分詞
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.2.3/elasticsearch-analysis-pinyin-6.2.3.zip
官網地址 https://github.com/medcl/elasticsearch-analysis-pinyin
同義詞分詞
./bin/elasticsearch-plugin install https://github.com/bells/elasticsearch-analysis-dynamic-synonym/releases/download/5.1.1/elasticsearch-analysis-dynamic-synonym-5.1.1.zip
手動安裝分詞外掛
下載完成後unzip -x elasticsearch-analysis-pinyin-5.6.8.zip mv /usr/local/snjx/elk/elasticsearch-5.6.8/plugins
ik 帶有兩個分詞器
ik_max_word :會將文字做最細粒度的拆分;儘可能多的拆分出詞語
ik_smart:會做最粗粒度的拆分;已被分出的詞語將不會再次被其它詞語佔有
The plugin includes analyzer: pinyin
, tokenizer: pinyin
and token-filter: pinyin
說明:synonyms_path
是必須要配置的,根據它的值是否是以http://
或者https://
開頭來判斷是本地檔案,還是遠端檔案。
interval
非必須配置的,預設值是60,單位秒,表示間隔多少秒去檢查同義詞檔案是否有更新。
ignore_case
非必須配置的, 預設值是false。
expand
非必須配置的, 預設值是true。
format
非必須配置的, 預設值是空字串, 如果為wordnet,則表示WordNet結構的同義詞。
熱更新同義詞說明
- 對於本地檔案:主要通過檔案的修改時間戳(Modify time)來判斷是否要重新載入。
- 對於遠端檔案:
synonyms_path
是指一個url。 這個http請求需要返回兩個頭部,一個是Last-Modified
,一個是ETag
,只要有一個發生變化,該外掛就會去獲取新的同義詞來更新相應的同義詞。
注意: 不管是本地檔案,還是遠端檔案,編碼都要求是UTF-8的文字檔案