最近工作需要,開始研究ES,當前ES的最新版本為5.0.1,從之前的2.x的版本號一下升級到5.x,主要是之前Elastic的產品版本號因為收購等原因很亂,ES 2.X版本的和Kibana 4.x版本的配套使用,讓人感覺不爽。這下一步到位,所有的產品系列版本號都從5.0開始,這樣,5.0的ES就和5.0的Kibana一致了。
本篇會記錄ES5.0.1 + Kibana 5.0.1 + ik 5.0.1的安裝。
首先,去Elastic官網 https://www.elastic.co/downloads ,下載頁有所有Elastic的產品,都是最新的版本(版本號還一致)。
下載Elasticsearch和Kibana。
然后去GitHub下載配套的IK分詞器,Smartcn也可以,不過據說沒有ik靈活,目前還沒有深入到分詞,以后再試驗。https://github.com/medcl/elasticsearch-analysis-ik/releases ,直接下編譯好的zip包。
好了,工具備齊。統一上傳到服務器上。我用的是CentOS,MAC的話,ES和IK都是一樣的,Kibana注意一下就行,Kibana區分平台和32位/64位。
將三個文件放到一個文件夾中,scp到服務器
之后就開始在服務器上安裝了。
導航到存放安裝文件目錄:
全部解壓,使用unzip和tar -xvzf
然后嘗試去啟動elasticsearch,到elasticsearch的bin目錄下,執行./elasticseharch。
如果遇到下面的錯誤:
說明是用root賬戶來啟動的,因為ES是沒有權限限制的,還可以接收用戶的腳本,所有用root賬戶很不安全,需要新建一個賬戶來啟動。為了讓普通賬戶啟動的ES能夠寫入數據,需要將elasticsearch文件夾的操作權限付給新建的賬戶(ES的索引數據就放在elasticsearch/data/下)。
創建elsearch用戶組及elsearch用戶
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
-g是添加到組,-p是密碼
更改elasticsearch文件夾及內部文件的所屬用戶及組為elsearch:elsearch
cd /opt
chown -R elsearch:elsearch elasticsearch
同時,需要給新建的賬戶修改一下權限,ES要求的進程數和最大的內存都比原來大了。
修改vm.map 限制
vi /etc/sysctl.conf vm.max_map_count=262144
修改文件限制:
vi /etc/security/limits.conf
新建用戶名 hard nofile 65536
新建用戶名 soft nofile 65536
修改線程限制(這個比較特殊 centos 6.5的原因)
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 65535
* hard nproc 65535
然后用su指令切換到新建的普通用戶 ,啟動。如果需要后台啟動的話,使用./elasticsearch -d。
然后就可以在命令行中用curl http://localhost:9200?pretty 看看輸出
此時,ES可以在本地訪問,但是用瀏覽器遠程的話,還是無法訪問的,因為相應的端口沒有打開。此時需要兩個步驟:
- 用iptables添加白名單,命令:vi /etc/sysconfig/iptables
然后添加如下
9200,9300ES使用,5601Kibana使用,后面會說到。
Service iptables restart生效。
2. 此時請求進來是可以的,但是ES也有配置,可以接受外部請求,進到安裝目錄/config/elasticsearch.yml,將network.host設置為0.0.0.0
然后重啟ES。此時,遠程就可以訪問ES
接下來安裝Kibana,也挺簡單,解壓之后,先進到安裝目錄/config/kibana.yml中,將server.host修改一下,否則遠程無法訪問,這個配置在Kibana4.6.1(對應ES2.4.0)的時候還不需要配置,但是5.0.1就需要了。
然后kibana里面有默認的ES訪問路徑,如果你沒有改動過ES的端口,並且Kibana跟ES部署在一起,就不需要改動,否則需要配置這里:
然后遠程啟動,看下Kibana5.0.1的樣子:
之前ES和Kibana配合還需要使用plugin安裝一些Marvel,sense等,現在都不需要了,DevTools就是之前的Sense,好用!!
現在開始安裝ik分詞器,安裝之前,先說明一些變化:
- 之前可以在node節點上配置index默認的分詞器,如果是多節點,那么在每個節點上都配置就行了。這個有點不靈活,所以。5.0之后,ES已經不再支持在elasticsearch.yml中配置分詞器,改而在新建索引時,使用settings去配置,這個會在后面的編程中說到。
- 之前使用delete-by-query插件來實現type的整個刪除。這個插件也是從5.0開始沒有了,被整個島ES的Core中
3.從5.0開始ik的tokenizer發生了變化,提供了兩種,一種為ik_smart,一種為ik_max_word。直接一點,ik_max_word會盡量從輸入中拆分出更多 token,而ik_smart則相反,個人感覺,ik_max_word就是原來的ik,ik_smart是新加的。
好了,開始安裝,只需要把elasticsearch-analysis-ik-5.0.1.zip解壓,然后拷貝到ES安裝目錄下的plugins文件夾內,並把elasticsearch-analysis-ik-5.0.1文件夾名修改為ik。這樣,就安裝好了。正如前面說的,安裝完插件,現在不需要在配置文件中配置了,需要在新建索引的時候指定分詞器。
重啟啟動ES,可以看到如下log
用kibana查看一下,后續會談到如何這樣做。
好啦,至此,ES+Kibana+IK安裝好了。從2.4.1到5.0.1版本號跨度很大,很多地方也發生了很多變化,總體來說,更簡便了。后面接着說下用JAVA API來操作ES。今天先到這里。