Elasticsearch在docker安装及使用
1.安装docker
①安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
②添加阿里云的docker部署仓库
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
③安装docker
yum install docker-ce docker-ce-cli containerd.io
④启动docker
systemctl start docker
2.安装部署es
①查看所有的es镜像
docker search elasticsearch
②拉取你中意的es镜像(推荐star高的)
docker pull
(如果拉取过程中报错在镜像后面加上版本,比如elasticsearch:6.7.2)
em:
docker pull elasticsearch:6.7.2
③添加镜像加速(docker 默认去官网下载,速度感人,所以添加国内进行加速服务)
vi /etc/docker/daemon.json(文件不存在创建文件)
{“registry-mirrors”:[“https://reg-mirror.qiniu.com/"]}
systemctl daemon-reload
systemctl restart docker
④创建挂载的目录
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
mkdir -p /data/LPAPP/docker_elasticsearch-6.7.2/config
mkdir -p /data/LPAPP/docker_elasticsearch-6.7.2/data
mkdir -p /data/LPAPP/docker_elasticsearch-6.7.2/logs
mkdir -p /data/LPAPP/docker_elasticsearch-6.7.2/plugins
chmod -R 777 /data/LPAPP/docker_elasticsearch-6.7.2/data
chmod -R 777 /data/LPAPP/docker_elasticsearch-6.7.2/logs
echo "http.host: 0.0.0.0" >> /data/LPAPP/docker_elasticsearch-6.7.2/config/elasticsearch.yml
或者 vim /data/LPAPP/docker_elasticsearch-6.7.2/config/elasticsearch.yml 写入以下内容
可选:
/usr/share/elasticsearch/config/jvm.options 配置修改:
-Xms200m
-Xmx200m
修改后可去除容器启动配置:
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
elasticsearch.yml文件内容:
# 集群名称
cluster.name: docker-es-app
# 本节点名称
node.name: ES-Node01
# 是否允许该节点存储数据
node.data: true
# 监听IP
#network.host: 0.0.0.0
network.host: ["0.0.0.0"]
# 对外服务的端口
http.port: 9200
# 支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# 数据目录
#path.data: /data/LPAPP/es/data
# 日志目录
#path.logs: /data/LPAPP/es/logs
# 单节点
#discovery.type: single-node
如果没有挂载配置目录,则需要在容器中修改配置:
进入容器
ps -ef |grep elasticsearch
cd /data/LPAPP/es/config (cd /usr/share/elasticsearch/config)
vim elasticsearch.yml
|
⑤创建容器并启动
1.拉取镜像并创建容器并启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
docker run --name elasticsearch-6.7.2 -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /data/LPAPP/docker_elasticsearch-6.7.2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/LPAPP/docker_elasticsearch-6.7.2/data:/usr/share/elasticsearch/data \
-v /data/LPAPP/docker_elasticsearch-6.7.2/logs:/usr/share/elasticsearch/logs \
-v /data/LPAPP/docker_elasticsearch-6.7.2/plugins:/usr/share/elasticsearch/plugins \
-itd elasticsearch:6.7.2
|
2.创建容器并启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
docker run --name elasticsearch-6.7.2 -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /data/LPAPP/docker_elasticsearch-6.7.2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/LPAPP/docker_elasticsearch-6.7.2/data:/usr/share/elasticsearch/data \
-v /data/LPAPP/docker_elasticsearch-6.7.2/logs:/usr/share/elasticsearch/logs\
-v /data/LPAPP/docker_elasticsearch-6.7.2/plugins:/usr/share/elasticsearch/plugins \
-itd 2982ba071059
|
3.说明
1).其中elasticsearch.yml是挂载的配置文件,data是挂载的数据,plugins是es的插件,如ik。
而数据挂载需要权限,需要设置data文件的权限为可读可写,需要下边的指令:
chmod -R 777 要修改的路径
2)命令解释:
-e “discovery.type=single-node” 设置为单节点
特别注意:
-e ES_JAVA_OPTS="-Xms256m -Xmx256m” \ 测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了ES
⑤验证是否运行es成功
ip addr
curl -v http://127.0.0.1:9200
⑤开启9200端口
firewall-cmd –add-port=9200/tcp –permanent
firewall-cmd –reload
firewall-cmd –list-all
3 .安装ik分词器
0.下载
1
2
3
4
5
|
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.7.2/elasticsearch-analysis-ik-6.7.2.zip \
-P /data/tools
sudo yum install unzip
|
1).已挂载插件目录(执行):
1
2
3
4
5
6
7
8
|
\#创建目录:
mkdir -p /data/LPAPP/docker_elasticsearch-6.7.2/plugins/ik
\#解压
unzip /data/tools/elasticsearch-analysis-ik-6.7.2.zip -d /data/LPAPP/docker_elasticsearch-6.7.2/plugins/ik
|
2).未挂载插件目录(执行):
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
|
\#将压缩包移动到容器中
docker cp /data/tools/elasticsearch-analysis-ik-6.7.2.zip elasticsearch:/usr/share/elasticsearch/plugins
\#进入容器
docker exec -it elasticsearch /bin/bash
\#创建目录
mkdir /usr/share/elasticsearch/plugins/ik
\#将文件压缩包移动到ik中
mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.7.0.zip /usr/share/elasticsearch/plugins/ik
\#进入目录
cd /usr/share/elasticsearch/plugins/ik
\#解压
unzip elasticsearch-analysis-ik-7.7.0.zip
\#删除压缩包
rm -rf elasticsearch-analysis-ik-7.7.0.zip
|
3).重启ES容器
1
|
docker restart elasticsearch-6.7.2
|
4).验证ik分词器
1
2
3
4
5
6
7
8
9
10
11
|
POST /_analyze {"text":"我是中国人"}
POST /_analyze {"analyzer":"ik_max_word","text":"我是中国人"}
POST /_analyze {"analyzer":"ik_smart","text":"我是中国人"}
POST /_analyze {"text":"中华人民共和国国歌"}
POST /_analyze {"analyzer":"ik_max_word","text":"中华人民共和国国歌"}
POST /_analyze {"analyzer":"ik_smart","text":"中华人民共和国国歌"}
|
5).总结
给大家个建议,这玩意装与不装都挺好,不装查到的东西也很精确够使,装上会查出一些没有用的
4.备份与恢复
1).前期准备
架设NFS服务器,并将其挂在至所有elasticsearch节点,挂载点为/data/backup/elasticsearch
mkdir -p /data/backup/elasticsearch
注意如果是容器启动服务的话,必须是容器内路径
参考文档:
https://www.jixian.io/article/Elasticsearch%20%E6%9C%AC%E5%9C%B0%E5%A4%87%E4%BB%BD%E4%B8%8E%E8%BF%98%E5%8E%9F/
2).配置elasticsearch
A.修改所有节点的elasticsearch.yml文件
vim es目录/config/elasticsearch.yml
# 添加path.repo配置共享仓库的位置
path.repo: ["/usr/share/elasticsearch/data"]
# 保存后重启es
docker restart elasticsearch-6.7.2
3).创建了共享目录后在共享目录下为集群创建共享仓库
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
|
PUT http://192.168.20.116:9200/_snapshot/backup
{
"type": "fs",
"settings": {
"location": "/usr/share/elasticsearch/data/backup",
"compress": true, // 是否压缩,可选
"max_snapshot_bytes_per_sec" : "50mb", // 速度限制,默认为20mb,可选
"max_restore_bytes_per_sec" : "50mb"
}
}
curl -XPUT 192.168.20.116:9200/_snapshot/backup -H 'Content-Type:application/json' -d '
{
"type": "fs",
"settings": {
"location": "/usr/share/elasticsearch/data/backup",
"max_snapshot_bytes_per_sec": "50mb",
"max_restore_bytes_per_sec": "50mb",
"compress": "true"
}
}
|
4).备份索引数据
# 所有索引备份
PUT http://192.168.20.116:9200/_snapshot/backup/备份名
# 指定索引备份
{
“indices”: “index1, index2”
}
# 全量备份
curl -XPOST http://192.168.20.116:9200/_snapshot/backup/backup-2021-06-05?wait_for_completion=true
TIPS: 如果不希望快照作为后台进程运行,可以通过添加wait_for_completion=true参数,
使其在前台运行,知道备份完成。
# 终止备份
curl -XDELETE http://192.168.20.116:9200/_snapshot/backup/backup-2021-06-05
5).查看备份状态
GET http://192.168.20.116:9200/_snapshot/backup/备份名/_status
GET http://192.168.20.116:9200/_snapshot/backup/backup-2021-06-05/_status
6).查看备份列表
GET http://192.168.20.116:9200/_snapshot/backup/_all
7).删除备份
DELETE http://192.168.20.116:9200/_snapshot/backup/备份名
8).恢复数据
如果是在新的集群恢复数据,需要先将NFS挂载至elasticsearch节点,
并修改配置文件path.repo:["/data/backup/elasticsearch"],
并创建备份仓库,而后执行如下命令:
curl -XPOST http://192.168.20.116:9200/_snapshot/backup/backup-2021-06-05/_restore?wait_for_completion=true
如果,不在新的集群恢复,那么只需要执行上述命令即可。
备注: 使用快照并不会备份templates
# 全部恢复
# wait_for_completion=true 为阻塞运行,可选
POST http://192.168.20.116:9200/_snapshot/backup/备份名/_restore?wait_for_completion=true
# 指定恢复index1索引
{
“indices”: “index1”,
// 如需重命名,则增加
“rename_pattern”: “index1”, // 需改名的原索引名
“rename_replacement”: “index2” // 改名后索引名
}
9).查看恢复状态
GET http://192.168.20.116:9200/_recovery/
# percent字段为恢复百分比
# 如需取消一个恢复
DELETE http://192.168.20.116:9200/恢复后的索引名
5.安装视图工具
1).浏览器扩展安装(ElasticSearch-head)(推荐)
①下载扩展
https://codeload.github.com/mobz/elasticsearch-head/zip/refs/heads/master
②安装扩展
1.下载得到压缩包:elasticsearch-head-master.zip
2.解压进入目录,进入crx目录
3.复制文件:es-head.crx 到桌面并修改后缀为zip
4.解压zip文件到es-head目录
5.浏览器打开扩展管理,打开开发者模式
6.加载已解压的扩展程序->选择es-head目录
2).Dejavu安装
$ docker run -p 1358:1358 -d appbaseio/dejavu
open http://localhost:1358/
3).Kibana安装
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
|
docker pull kibana:6.7.2
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://自己的IP地址:9200 \
-p 5601:5601 -d kibana:6.7.2
实例:
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.20.92:9200 \
-p 5601:5601 -d kibana:6.7.2
进入容器修改相应内容
docker exec -it kibana /bin/bash
cd /usr/share/kibana/config
vi kibana.yml 添加以下:
server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: [ "http://自己的IP地址:9200" ]
i18n.locale: "zh-CN"
重启容器
docker restart kibana
|
然后访问页面
http://自己的IP地址:5601/app/kibana
http://192.168.20.92:5601/app/kibana
tips:
1.索引管理
2.设置查询时间
4).安装elasticsearch-head
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
\#拉取镜像
docker pull mobz/elasticsearch-head:5
\#创建容器
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
\#启动容器
docker start elasticsearch-head
or
docker start 容器id (docker ps -a 查看容器id )
|
#浏览器打开
浏览器打开: http://IP:9100
ElasticSearch-head 操作时不修改配置,默认会报 406错误码,无法查看数据
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
|
\#复制vendor.js到外部
docker cp 容器id:/usr/src/app/_site/vendor.js /data/conf/
docker cp 6130115b8ebd:/usr/src/app/_site/vendor.js /data/conf/
\#修改vendor.js
vim /data/conf/vendor.js
修改内容:
6886行
//contentType: "application/x-www-form-urlencoded",
contentType: "application/json;charset=UTF-8",
7574行
//var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
var inspectData = s.contentType === "application/json;charset=UTF-8" &&
docker cp /data/conf/vendor.js 容器id:/usr/src/app/_site
docker cp /data/conf/vendor.js 6130115b8ebd:/usr/src/app/_site
docker restart 容器id
|