CentOS 搭建Elasticsearch服務

配置Java環境

  1. 檢查Java版本,目前版本 6.5 的可安裝版需要Java 8

$ java -version
openjdk version “1.8.0_191”
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

如果不是的話,可以考慮安裝OpenJDK,如果Java版本已經匹配了可以跳過

yum list | grep jdk | grep 1.8
java-1.8.0-openjdk.x86_64 1:1.8.0.191.b12-1.el7_6 @updates
java-1.8.0-openjdk-headless.i686 1:1.8.0.191.b12-1.el7_6 @updates
中間略過一大堆
java-1.8.0-openjdk-src-debug.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-src-debug.x86_64 1:1.8.0.191.b12-1.el7_6 updates

選擇和機器匹配的版本,以java-1.8.0-openjdk.x86_64爲例

yum install java-1.8.0-openjdk.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
–> Running transaction check
—> Package java-1.8.0-openjdk.x86_64 1:1.8.0.191.b12-1.el7_6 will be installed
–> Processing Dependency: java-1.8.0-openjdk-headless(x86-64) = 1:1.8.0.191.b12-1.el7_6 for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
中間略過一大堆
Total download size: 34 M
Installed size: 108 M
Is this ok [y/d/N]: y
Downloading packages:
中間又略過一大堆
Installed:
java-1.8.0-openjdk.x86_64 1:1.8.0.191.b12-1.el7_6
Dependency Installed:
fontconfig.x86_64 0:2.13.0-4.3.el7 giflib.x86_64 0:4.1.6-9.el7 java-1.8.0-openjdk-headless.x86_64 1:1.8.0.191.b12-1.el7_6 libICE.x86_64 0:1.0.9-9.el7
libSM.x86_64 0:1.2.2-2.el7 libX11.x86_64 0:1.6.5-2.el7 libXau.x86_64 0:1.0.8-2.1.el7 libXcomposite.x86_64 0:0.4.4-4.1.el7
libXext.x86_64 0:1.3.3-3.el7 libXi.x86_64 0:1.7.9-1.el7 libXrender.x86_64 0:0.9.10-1.el7 libXtst.x86_64 0:1.2.3-1.el7
libjpeg-turbo.x86_64 0:1.2.90-6.el7 libxcb.x86_64 0:1.13-1.el7 lksctp-tools.x86_64 0:1.0.17-2.el7
Complete!

這時再check一下Java版本

java -version
openjdk version “1.8.0_191”
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK Server VM (build 25.191-b12, mixed mode)

  1. 配置JAVA_HOME

vi /etc/profile

在裏面添加以下幾行

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
JRE_HOMW=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

其中**/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64**是你的Java的安裝路徑。
然後執行

source /etc/profile

讓配置生效

echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64

準備ES服務

  1. 下載ES
    es6.5.2版本爲例,也可以按需要選擇自己喜歡的版本

cd /usr/local
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.2.tar.gz
–2018-12-11 15:26:25–
中間省略一大堆
2018-12-11 15:26:46 (5.63 MB/s) - ‘elasticsearch-6.5.2.tar.gz’ saved [113320120/113320120]

解壓縮

tar -xzf elasticsearch-6.5.2.tar.gz

然後驗證一下

ls -ltr
total 110720
中間省略無關的folder
-rw-r–r-- 1 root root 113320120 Dec 5 21:37 elasticsearch-6.5.2.tar.gz
-rw-r–r-- 9 root root 4096 Dec 11 15:30 elasticsearch-6.5.2

爲了能正常運行,修改下權限

chmod -R 777 elasticsearch-6.5.2

然後成爲

ls -ltr
total 110720
-rw-r–r-- 1 root root 113320120 Dec 5 21:37 elasticsearch-6.5.2.tar.gz
drwxrwxrwx 9 root root 4096 Dec 11 15:30 elasticsearch-6.5.2

啓動ES

  1. 修改ES配置文件

cd elasticsearch-6.5.2
vi config/elasticsearch.yml

修改以下幾個配置,並且把前面的**#**去掉使配置生效:

cluster.name: my-es (給自己的es集羣起一個響亮的名字,所有節點都會通過這個名字尋找彼此)
node.name: node-60 (一般以當前節點ip地址的最後一位或兩位命名,也可以起一個喜歡的節點名字)
network.host: 10.0.0.60 (當前機器的外網ip,可以通過ifconfig命令來獲取)
http.port: 9200 (ES監聽端口,默認9200)
discovery.zen.ping.unicast.hosts: [“10.0.0.60”, “10.0.0.61”] (如果多於一個節點,同時需要彼此心跳,則需要把其他節點ip地址配置在這裏)

保存退出

  1. 修改JAVA配置

vi config/jvm.options

修改Java的堆棧信息

-Xms2g
-Xmx2g
(一般爲當前機器內存的一半,當前機器內存爲4G所以配置2g在這裏)
保存退出

運行命令

exit (退出root用戶,ES一般不支持root身份啓動)
./bin/elasticsearch
[2018-12-11T16:01:22,525][INFO ][o.e.e.NodeEnvironment ] [node-60] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [35gb], net total_space [39.2gb], types [rootfs]
[2018-12-11T16:01:22,528][INFO ][o.e.e.NodeEnvironment ] [node-60] heap size [1.9gb], compressed ordinary object pointers [true]
省略一大堆
[2018-12-11T16:16:15,153][INFO ][o.e.h.n.Netty4HttpServerTransport] [node-60] publish_address {10.0.3.60:9200}, bound_addresses {10.0.3.60:9200}
[2018-12-11T16:16:15,153][INFO ][o.e.n.Node ] [node-60] started

至此,ES節點啓動成功,驗證一下

curl 10.0.0.60:9200
{
“name” : “node-60”,
“cluster_name” : “media-es”,
“cluster_uuid” : “VQL5BWbYRzKKXsMCXQvyUQ”,
“version” : {
“number” : “6.5.2”,
“build_flavor” : “default”,
“build_type” : “tar”,
“build_hash” : “9434bed”,
“build_date” : “2018-11-29T23:58:20.891072Z”,
“build_snapshot” : false,
“lucene_version” : “7.5.0”,
“minimum_wire_compatibility_version” : “5.6.0”,
“minimum_index_compatibility_version” : “5.0.0”
},
“tagline” : “You Know, for Search”
}

還可以後臺啓動,只需要在啓動命令後面加上 -d 就好

./bin/elasticsearch -d

安裝IK分詞器

進入es的plugins目錄,創建ik自己的目錄

cd plugins
mkdir ik
cd ik

然後下載對應的分詞器包,這裏以ES6.5爲例

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.2/elasticsearch-analysis-ik-6.5.2.zip
中間省略一大堆
2018-12-11 16:30:39 (2.28 MB/s) - ‘elasticsearch-analysis-ik-6.5.2.zip’ saved [4504580/4504580]

安裝unzip,如果有了的話跳過

yum install -y unzip
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
中間略過一大堆
Complete!

然後解壓縮剛纔下的那個包

unzip elasticsearch-analysis-ik-6.5.2.zip
Archive: elasticsearch-analysis-ik-6.5.2.zip
inflating: elasticsearch-analysis-ik-6.5.2.jar
inflating: httpclient-4.5.2.jar
inflating: httpcore-4.4.4.jar
inflating: commons-logging-1.2.jar
inflating: commons-codec-1.9.jar
creating: config/
inflating: config/quantifier.dic
inflating: config/preposition.dic
inflating: config/extra_single_word_low_freq.dic
inflating: config/stopword.dic
inflating: config/suffix.dic
inflating: config/extra_main.dic
inflating: config/IKAnalyzer.cfg.xml
inflating: config/main.dic
inflating: config/extra_stopword.dic
inflating: config/extra_single_word_full.dic
inflating: config/surname.dic
inflating: config/extra_single_word.dic
inflating: plugin-descriptor.properties
inflating: plugin-security.policy

進入config目錄,創建自己的擴展詞/停止詞詞典…

vi my.dic

然後修改IKAnalyzer.cfg.xml加入詞典信息

vi IKAnalyzer.cfg.xml
在這裏插入圖片描述

重啓ES使之生效

可能遇到的報錯

  1. 機器虛擬內存/線程限制

[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

對於[1]執行以下命令

sudo vi /etc/sysctl.conf

添加這一行

vm.max_map_count=655360

然後運行

sysctl -p
省略不重要的部分
vm.max_map_count = 655360

對於[2]執行以下命令

sudo vi /etc/security/limits.conf

把最後兩行

* soft nofile 65535
* hard nofile 65535

改成

* soft nofile 65536
* hard nofile 65536

然後重啓系統

reboot

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章