ElasticSearch 部署

简介

本文记载的是在 CentOS7.6 系统安装 Elasticsearch 6.8.1版本的步骤,更高版本目前还不支持spring。

最新支持列表看这里:https://docs.spring.io/spring-data/elasticsearch/docs/3.2.0.RC3/reference/html/#preface.versions

ELK项目历史包下载:https://www.elastic.co/cn/downloads/past-releases#kibana

ElasticSearch集群部署

集群环境:准备三台centos7.6

    192.168.99.41

    192.168.99.42

    192.168.99.43

// 以下内容三台服务器同时操作

  1. 安装JDK1.8并下载ES6.8.1安装包到三台服务器本地
1
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.1.tar.gz
  1. 创建ES用户和组以及
1
2
~]$ groupadd  -r elasticsearch
~]$ useradd -r -G elasticsearch elasticsearch
  1. 修改必要的系统配置信息
1
2
3
4
5
6
7
~]$ vim /etc/security/limits.conf
* - nofile 65535

~]$ vim /etc/sysctl.conf
vm.max_map_count = 262144

// 要执行sysctl -p 持久化配置,不然切换用户后,可能没有生效
  1. 将elasticsearch-6.8.1.tar.gz解压至/data目录下,创建data数据目录与log日志目录,修改目录属主属组为elasticsearch。
1
2
3
4
~]$ tar xzvf elasticsearch-6.8.1.tar.gz  -C /data/
~]$ mkdir -p /data/elasticsearch-6.8.1/data/
~]$ mkdir -p /data/elasticsearch-6.8.1/logs/
~]$ chown -R elasticsearch:elasticsearch /data/elasticsearch-6.8.1/
  1. 修改ES配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
~]# su - elasticsearch
~]$ vim /data/elasticsearch-6.8.1/config/elasticsearch.yml

# ES集群名称三台要配置一样
cluster.name: mycluster

# 当前节点的名称随意设置
node.name: node1

# 数据存储的目录
path.data: /data/elasticsearch-6.8.1/data

# 日志存储的目录
path.logs: /data/elasticsearch-6.8.1/logs

# 当前节点的ip地址
network.host: 192.168.99.41

# 自动发现集群主机的节点ip
discovery.zen.ping.unicast.hosts: ["192.168.99.41","192.168.99.42","192.168.99.43"]

gateway.recover_after_nodes: 3

# 添加以下内容为了ES-head可以跨域连接
http.cors.enabled: true
http.cors.allow-origin: "*"
  1. 新建ES启动脚本并加入到开机自启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
~]# vim /etc/init.d/elasticsearch
#!/bin/bash
### BEGIN INIT INFO
# Provides: elasticsearch
# Required-Start: $local_fs $network $remote_fs
# Should-Start: ypbind nscd ldap ntpd xntpd
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO


// 重新加载环境变量
source /etc/profile

es_pid=`jps | grep Elasticsearch | awk '{print $1}'`
case "$1" in
start)
cd /data/elasticsearch-6.8.1/
./bin/elasticsearch -d
!
echo "elasticsearch startup"
;;
stop)
kill -9 $es_pid
echo "elasticsearch stopped"
;;
restart)
kill -9 $es_pid
echo "elasticsearch stopped"
cd /data/elasticsearch-6.8.1/
./bin/elasticsearch -d
!
echo "elasticsearch startup"
;;
status)
[ -z "$es_pid" ] && echo "--- ES is not running ---" || echo "--- ES is running PID:$(echo $es_pid) ---"
;;
*)
echo "Help:start | stop | restart |status"
;;
esac
exit $?

~]# chmod +x /etc/init.d/elasticsearch

// 加入到开机自启
~]# chkconfig --add elasticsearch
~]# /etc/init.d/elasticsearch start
  1. 验证
1
~]# ss -tnl | egrep '9200|9300'

ElasticSearch-head 部署

项目地址:https://github.com/mobz/elasticsearch-head

插件下载方式安装:

1.从https://download.csdn.net/download/xiaolong2230/11209538下载或者从https://github.com/mobz/elasticsearch-head下载ZIP包。

1
2
# 在 elasticsearch 目录下创建目录/plugins/head
# 刚刚解压的elasticsearch-head-master目录下所有内容COPY到当前创建的/plugins/head/下面。

2.重启Elasticsearch。访问。
访问地址是http://{你的ip地址}:9200/_plugin/head/

Docker方式安装:

1.下载elasticsearch-head的docker镜像并启动一个容器

1
2
3
4
5
6
// 下载镜像
[root@Mysql-Slave2 ~]# docker pull putianhui/elasticsearch-head:5
[root@Mysql-Slave2 ~]# docker run -itd --name=elasticsearch-head -p 9100:9100 putianhui/elasticsearch-head:5

// 验证
浏览器访问:http://192.168.99.43:9100/

elasticsearch-head:5连接elasticsearch 6.x无法显示浏览数据的解决方案

1、因为docker容器里面无法使用vi/vim,所以需要先将文件拷贝出来。

1
2
3
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js ./

// 说明:将容器里面/usr/src/app/_site/vendor.js文件拷贝到宿主机的当前目录下,其中es_head为容器名,也可以写容器id

2、编辑文件

1
2
3
4
5
6
7
8
9
10
11
12
$ vi vendor.js
// 共有两处

1)6886行
contentType: "application/x-www-form-urlencoded
改成
contentType: "application/json;charset=UTF-8"

2)7573行
var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
改成
var inspectData = s.contentType === "application/json;charset=UTF-8" &&

3、将改完后的文件拷贝回容器

1
2
3
docker cp vendor.js es_head:/usr/src/app/_site

// 无需重启,刷新页面即可。

IK 分词安装

项目地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

1
2
// 通过es的plugin插件方式安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.1/elasticsearch-analysis-ik-6.8.1.zip

2.通过下载插件包安装

1
2
3
4
5
6
7
8
9
10
// 切换到es用户并下载ik分词插件包
// 以下操作三台主机都要安装
[root@Mysql-Slave2 ~]# su - elasticsearch
[elasticsearch@Mysql-Slave2 ~]$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.1/elasticsearch-analysis-ik-6.8.1.zip
[elasticsearch@Mysql-Slave2 ~]$ mkdir -p /data/elasticsearch-6.8.1/plugins/ik
[elasticsearch@Mysql-Slave2 ~]$ mv elasticsearch-analysis-ik-6.8.1.zip /data/elasticsearch-6.8.1/plugins/ik
[elasticsearch@Mysql-Slave2 ~]$ cd /data/elasticsearch-6.8.1/plugins/ik
[elasticsearch@Mysql-Slave2 ~]$ unzip elasticsearch-analysis-ik-6.8.1.zip
[elasticsearch@Mysql-Slave2 ~]$
[elasticsearch@Mysql-Slave2 ~]$

kibana开启监控后设置监控数据保存天数

1
2
PUT _cluster/settings
{"persistent": {"xpack.monitoring.history.duration":"1d"}}

kibana开启监控后设置排除系统索引的监控

1
2
PUT _cluster/settings
{"persistent": {"xpack.monitoring.collection.indices": "*,-.*"}}