之前講過在Windows上安裝Elasticsearch5.x,但實際生產環境還是需要Linux支持,而且ES在Linux環境下運行要比Windows環境下要高,So...Linux上還是要學會安裝。經過自己的研究還有同事的幫助,終於搞定Linux下安裝Elasticsearch5.x了。
前言
1、這里我的系統是阿里雲的 CentOS 7.2 64位,2核4G
2、$
開始的命令表示你要輸入的命令
一、JAVA環境配置
ElasticSearch是基於lucence開發的,也就是運行需要java支持。所以要先安裝JAVA環境。
由於ElasticSearch 5.x 依賴於JDK 1.8
的,所以現在我們下載JDK 1.8或者更高版本。以下命令將會下載最新的jdk
$ yum install java
安裝完畢后測試
$ java -version
二、Elasticsearch引擎安裝
1、創建帳號和分配權限
官方文檔上說Elasticsearch不適合在root管理員帳號下運行,所以要先建立一個賬號專門運行Elasticsearch.
創建一個elsearch賬戶
$ adduser elsearch
設置密碼
$ passwd elsearch
按照提示輸入密碼和確認密碼就成功創建elsearch賬戶了。
修改用戶權限,這一步非常重要
使用vim 編輯器打開文件打開/etc 目錄下面的文件sudoers
$ vim /etc/sudoers
找到如下位置:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在這個區塊下面添加一行命令,使elsearch這個帳號可以獲得更高的操作權限
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
elsearch ALL=(ALL) NOPASSWD: ALL
ok保存。
2、引擎下載
退出root賬戶,使用剛剛創建的elsearch賬戶登錄服務器想,下載Elasticsearch安裝包。
$ wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.2.zip
文件校驗
$ sha1sum elasticsearch-5.3.2.zip
解壓
$ unzip elasticsearch-5.3.2.zip
解壓完將有兩個文件,zip可以刪掉。
$ ls
elasticsearch-5.3.2 elasticsearch-5.3.2.zip
3、引擎啟動
進到elasticsearch-5.3.2目錄下
# cd elasticsearch-5.3.2/
啟動引擎(-d表示為后台啟動)
$ ./bin/elasticsearch -d
查看elasticsearch進程情況
$ ps -ef |grep elasticsearch
如果看到如下一串東西則表示啟動成功
elsearch 22042 1 20 00:36 pts/2 00:00:09 /bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/home/elsearch/elasticsearch-5.3.2 -cp /home/elsearch/elasticsearch-5.3.2/lib/elasticsearch-5.3.2.jar:/home/elsearch/elasticsearch-5.3.2/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
或者使用 curl測試,es端口默認情況下是9200
$ curl "localhost:9200"
返回如下信息則說明啟動成功
{
"name" : "nHlYWW8",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "SNUvV-1fQLKaGnfXrA4UXg",
"version" : {
"number" : "5.3.2",
"build_hash" : "3068195",
"build_date" : "2017-04-24T16:15:59.481Z",
"build_snapshot" : false,
"lucene_version" : "6.4.2"
},
"tagline" : "You Know, for Search"
}
4、引擎健康情況
$ curl "localhost:9200/_cat/health?v"
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1493916286 00:44:46 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0%
如果出現這條信息,說明你的elastic search已經正常運行了,恭喜你
標題 | 含義 |
---|---|
epoch | unix 的時間 |
timestamp | 時間戳 |
cluster | 集群 |
status | 健康狀態:紅為異常, 綠黃為健康 |
node.total | 節點的總數 |
node.data | 節點的數據 |
shards | 分片 |
pri | active_primary_shards 已激活的主要分片 |
relo | 回收的切片 |
init | 已經初始的切片數量 |
unassign | 未分配切片數量 |
pending_tasks | 被擱置的任務數量 |
max_task_wait_time | 任務等待的最大時間 |
active_shards_percents | 激活分片的百分比 |
注意 status黃色和綠色的區別:
- 紅色:所有的分片沒有全部激活
- 黃色:主要分片全部啟動,但是備份的分片沒有啟動
- 綠色:主要分片和其備份都已經啟動
官方詳情請參閱https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html
5、安裝中文分詞插件 smartcn
仍然使用elsearch登錄,然后切換目錄到elsearchsearch 所在的文件夾
$ cd elasticsearch-5.3.2
執行安裝命令
$ sudo ./bin/elasticsearch-plugin install analysis-smartcn
卸載命名
$ sudo ./bin/elasticsearch-plugin remove analysis-smartcn
測試分詞,使用"人人編程,世界和平"為例子,進行測試,使用站長工具 將例子中的字斷轉換成unicode編碼的字斷 在的終端中,調用下面方法,驗證smartcn分詞插件是否已經成功運行
$ curl -XGET 'localhost:9200/_analyze?pretty' -d '{"analyzer":"smartcn", "text": "\u4eba\u4eba\u7f16\u7a0b\uff0c\u4e16\u754c\u548c\u5e73"}'
出現如下結果證明分詞成功。若沒有添加"analyzer":"smartcn"
指定分詞,將使用默認分詞。對於中文來講,將會把所有的字單獨分出來。
{
"tokens" : [
{
"token" : "人人",
"start_offset" : 0,
"end_offset" : 2,
"type" : "word",
"position" : 0
},
{
"token" : "編程",
"start_offset" : 2,
"end_offset" : 4,
"type" : "word",
"position" : 1
},
{
"token" : "世界",
"start_offset" : 5,
"end_offset" : 7,
"type" : "word",
"position" : 3
},
{
"token" : "和平",
"start_offset" : 7,
"end_offset" : 9,
"type" : "word",
"position" : 4
}
]
}
6、配置elasticsearch.yml
$ cd elasticsearch-5.3.2
$ vim ./config/elasticsearch.yml
根據需求修改一下節點:
cluster.name: es-5.3-test #換個集群的名字,免得跟別人的集群混在一起
node.name: node-es-101 #換個節點名字
network.host: 0.0.0.0 #修改一下ES的監聽地址,這樣別的機器也可以訪問
http.port: 9200 #端口號,默認就好
# 增加新的參數,這樣head插件可以訪問es
http.cors.enabled: true
http.cors.allow-origin: "*"
#增加新的參數,這樣ES可以通過外網進行訪問,只設置network.host: 0.0.0.0 公網仍舊無法訪問
transport.host: localhost
transport.tcp.port: 9300
@注意,設置參數的時候:后面要有空格!
7、Sense安裝使用
對於不熟悉Linux的人來講,使用curl是個硬傷,所以 Chrome有個插件Sense可以幫我們很方便的操作Elasticsearch。國內需要翻牆。
先來測試下分詞
三、安裝 Kibaba
Kibana是一個開源為elasticsearch 引擎提供數據和數據分析
1、下載安裝
切換到root賬戶,按順序依次執行以下命令
$ wget -c https://artifacts.elastic.co/downloads/kibana/kibana-5.3.2-x86_64.rpm
$ sha1sum kibana-5.3.2-x86_64.rpm
$ sudo rpm --install kibana-5.3.2-x86_64.rpm
2、配置Kibana的host
$ whereis kibana
kibana: /etc/kibana /usr/share/kibana
如果顯示以上結果表明kibana已經正確安裝完成,兩個目錄
/etc/kibana
為kibana config文件所在的目錄
/usr/share/kibana
為程序所在的目錄
修改Kibana的配置文件,允許公網訪問
$ vim /etc/kibana/kibana.yml
將server.host
修改為
server.host: "0.0.0.0"
3、啟動Kibana
配置kibana能夠自動啟動
$ sudo chkconfig --add kibana
啟動和停止
$ sudo -i service kibana start
$ sudo -i service kibana stop
接下來即可使用公網訪問http://IP:5601
打開Kibana了。
官方詳情請參閱https://www.elastic.co/guide/en/kibana/5.3/targz.html