Elasticsearch開篇-環境搭建

xieguanping12發表於2019-02-16

說明

  1. 建議將整篇文章看完後再進行操作,文章結尾有我遇到的坑及解決方案,可以看看!
  2. 務必在java安裝好的環境下進行

一、準備工作:

  1. Ubuntu 16.04.2 x86_64
  2. Elasticsearch 5.1.2 下載地址:https://artifacts.elastic.co/…
  3. Kibana 5.1.2 下載地址:https://artifacts.elastic.co/…
  4. 由於oracal下載java太慢,可以到CSDN下載 https://download.csdn.net/dow…
  5. 在root許可權下操作建立使用者:
    建立elasticsearch組:groupadd elasticsearch
    建立elasticsearch使用者:useradd elasticsearch -g elasticsearch
    建立elasticsearch家目錄:mkdir /home/elasticsearch
    改變家目錄許可權:chown -R mkdir elasticsearch:elasticsearch /home/elasticsearch

二、開始搭建

1. Elasticsearch 5.1.2:

-  下載Es:`wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.2.tar.gz`
- 解壓Es到指定目錄:`tar -zxf elasticsearch-5.1.2.tar.gz -C /usr/local/`
- 改變目錄許可權:`chown -R elasticsearch:elasticsearch  elasticsearch-5.1.2/`
- 在Java環境變數配置好的情況下執行後臺啟動es:`sudo ./bin/elasticsearch -d -p pid`
- 關閉es:``kill `cat pid```   #pid是後臺啟動es時的程式號,檔案是在/usr/local/elasticsearch-5.1.2/pid
- 在伺服器執行:`curl localhost:9200`
- 如果有如下json返回表示安裝成功:
```json
{
  "name" : "9bUWQKn",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "2J3aD8mISy2A6l7JP6T4cA",
  "version" : {
    "number" : "5.1.2",
    "build_hash" : "c8c4c16",
    "build_date" : "2017-01-11T20:18:39.146Z",
    "build_snapshot" : false,
    "lucene_version" : "6.3.0"
  },
  "tagline" : "You Know, for Search"
}
```

2、Kibana 5.1.2

- 下載Kibana:`wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.2-linux-x86_64.tar.gz`
- 解壓:`tar -zxf kibana-5.1.2-linux-x86_64.tar.gz -C /usr/local/`
- `cd /usr/local/kibana-5.1.2-linux-x86_64`
- 改變kibana的擁有者為elasticsearch:`sudo chown elasticsearch:elasticsearch -R kibana-5.1.2-linux-x86_64/`
- 啟動kibana:`./bin/kibana`
- 訪問:用瀏覽器http://192.168.10.10:5601/ 此時會進不去頁面
    - 原因:kibana的預設限制了訪問ip
    - 解決:`vim /usr/local/kibana-5.1.2-linux-x86_64/config`
      將:server.host前的註釋開啟,最終是:server.host: "0.0.0.0"要重啟kibana:`./bin/kibana`
    - 再次訪問:http://192.168.10.10:5601/   就ok了額外說下:有了kibana了就不用安裝sense這個外掛了,因為kibana 5.1.2預設整合了sense

三、用chrome裝es的head擴充套件

不用elasticsearch-plugin安裝head了,直接Chrome擴充套件:https://chrome.google.com/web…

四、坑

1、用root使用者許可權執行es會報:

在安裝es的目錄/usr/local/elasticsearch-5.1.2執行es:./bin/elasticsearch

會報如下錯誤:
root@homestead:/usr/local/elasticsearch-5.1.2# ./bin/elasticsearch
2018-03-26T15:17:52,954[o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
原因:es不能以root使用者啟動
解決:切換成elasticsearch使用者 su elasticsearch

2、執行./bin/elasticsearch -d -p pid會報

elasticsearch@homestead:/usr/local/elasticsearch-5.1.2$ Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error=`Cannot allocate memory` (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.

原因:我是在Mac下安裝了Virtual Box,只分配了2g的記憶體,這是由於記憶體不足引起的
解決:
修改es的配置檔案:vim /usr/local/elasticsearch-5.1.2/config/jvm.options
將:-Xms2g 改為 -Xms1g,如果1g還不夠的話,可以改為-Xms512m
將:-Xmx2g 改為 -Xmx1g,如果1g還不夠的話,可以改為-Xmx512m
修改完jvm.options後,再執行./bin/elasticsearch -d -p pid

3、./bin/elasticsearch -d -p pid會報

elasticsearch@homestead:/usr/local/elasticsearch-5.1.2$ 2018-03-26 15:44:22,462 main ERROR RollingFileManager (/usr/local/elasticsearch-5.1.2/logs/elasticsearch.log) java.io.FileNotFoundException: /usr/local/elasticsearch-5.1.2/logs/elasticsearch.log (Permission denied) java.io.FileNotFoundException: /usr/local/elasticsearch-5.1.2/logs/elasticsearch.log (Permission denied)

原因:許可權不夠,導致/usr/local/elasticsearch-5.1.2/logs/elasticsearch.log日誌檔案以elasticsearch的檔案沒許可權寫入
解決:sudo chown -R elasticsearch:elasticsearch elasticsearch-5.1.2
再次執行:./bin/elasticsearch -d -p pid

4、在啟動es時報:

main ERROR Unable to inject fields into builder class for plugin type class org.apache.logging.log4j.core.appender.RollingFileAppender

原因:es是在java環境下執行的,所以要先安裝java,並配置好相應的環境變數
解決:以下操作在root使用者下操作將java解壓到要安裝的目錄:/usr/local/jdk1.8.0_161
配置java環境變數
vim /etc/profile
在/etc/profile檔案末尾新增如下幾行,根據你所安裝的目錄修改
JAVA_HOME=/usr/local/jdk1.8.0_161
CLASSPATH=.:$JAVA_HOME//usr/local/jdk1.8.0_161/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
再執行source /etc/profile生效

5、kibana的版本和es的版本務必一致

如:Elasticsearch 5.1.2與Kibana 5.1.2,版本都5.1.2,不同版本的話,在啟動kibana時會報錯

6、啟動es時報

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

臨時解決:sudo sysctl -w vm.max_map_count=262144 #重啟linux會失效
永久解決:sudo vim /etc/sysctl.conf
加入:vm.max_map_count=262144
再重啟linux生效

7、用chrome訪問192.168.10.10:9200時出進入不了頁面

原因:es的配置檔案限制了指定的ip訪問,預設是伺服器的locallhost:9200
解決:
sudo vim /usr/local/elasticsearch-5.1.2/config/elasticsearch.yml
將:network.host的註釋開啟,最終是network.host: 0.0.0.0,表示不限制訪問ip
kill `cat pid` #殺掉es程式
./bin/elasticsearch -d -p pid #啟動es
再用瀏覽器訪問:192.168.10.10:9200

相關文章