1.下載並解壓elasticsearch
官網 http://www.elastic.co/downloads/elasticsearch
本次下載地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz
解壓 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插件下載
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
6.安裝nodejs head插件依賴node環境
wget https://npm.taobao.org/mirrors/node/latest-v9.x/node-v9.10.0-linux-x64.tar.gz
配置下環境變量,編輯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
同義詞分詞
官網地址 https://github.com/bells/elasticsearch-analysis-dynamic-synonym/tree/master
./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的文本文件