1. 程式人生 > >Elasticsearch6.2.3及其head外掛安裝 中文分詞 elasticsearch-analysis-ik 拼音分詞 同義詞分詞

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結構的同義詞。

熱更新同義詞說明

  1. 對於本地檔案:主要通過檔案的修改時間戳(Modify time)來判斷是否要重新載入。
  2. 對於遠端檔案:synonyms_path 是指一個url。 這個http請求需要返回兩個頭部,一個是 Last-Modified,一個是 ETag,只要有一個發生變化,該外掛就會去獲取新的同義詞來更新相應的同義詞。

注意: 不管是本地檔案,還是遠端檔案,編碼都要求是UTF-8的文字檔案