Elasticsearch-安装
# 前言
前面介绍了Elasticsearch,想要用它,就像跟MySQL一样,首先要把它安装上。 需要安装2个东西,一个是Elasticsearch,另一个kibana,kibana是可视化工具,当然也可以不装,但是可视化后方便管理,这里还是建议安装,下面采用docker安装。
Kibana中文文档: https://www.elastic.co/guide/cn/kibana/current/index.html
下载安装之前,把虚拟机至少设置为1g内存,启动虚拟机vagrant up
,连接虚拟机vagrant ssh
如果不是管理员用户,下面的命令需要加前缀sudo
,
- 切换到管理员
su root
# 然后输入密码
2
# 下载镜像文件
# 查看虚拟机内存,建议剩余300以上
free -m
# 存储和检索数据
docker pull elasticsearch:7.4.2
# 可视化检索数据
docker pull kibana:7.4.2
2
3
4
5
6
elasticsearch和kibana版本建议统一
# 创建ES实例
- 创建实例前,先执行一下命令
# 创建配置文件目录
mkdir -p /mydata/elasticsearch/config
# 创建数据文件目录
mkdir -p /mydata/elasticsearch/data
# 配置es可以让远程任何机器进行访问,并写入上面的配置文件中
echo "http.host: 0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml
2
3
4
5
6
注意http.host: 0.0.0.0中的host:后面有一个空格
- 创建完配置文件检查一下
# 1.切换到配置文件目录
cd /mydata/elasticsearch/config/config/
# 2.ls查看是否存在 elasticsearch.yml
# 3.查看配置文件
cat elasticsearch.yml
# 如果返回http.host: 0.0.0.0
2
3
4
5
6
- 创建实例
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type"=single-node \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
--restart=always \
-d elasticsearch:7.4.2
2
3
4
5
6
7
8
如果忘记设置跟随虚拟机启动,docker update 容器id前三位 --restart=always
9200是HTTP的REST请求
9300是分布式集群下的通信接口
"discovery.type"=single-node 单节点模式
ES_JAVA_OPTS="-Xms64m -Xmx512m" 测试期间虚拟机内存,真正上线要用32g
后面的-v都是同步挂载文件,修改外部文件,同步到内部文件
运行成功后检查一下
docker ps
检查过9200端口和9300端口都映射成功,再次去访问一下
# 访问ES端口
192.168.56.10:9200
返回
{
"name" : "b7e89eef8655",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "9sCmhiRITKmNyi7XZprE8Q",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
至此ES实例创建成功!
# 如果启动不成功
docker logs
查看一下日志
Causede by:java.nio.file.AccessDeniedException
# 切换到es目录
cd /mydata/elasticsearch
# 查看权限
ll
2
3
4
发现是没有文件夹权限,不是所有用户都有文件夹的可读可写可执行权限
# 改变文件夹权限
chmod -R 777 /mydata/elasticsearch/
再次ll
,查看文件夹权限,发现文件夹权限都有了,可读可写可执行
# 重启es实例
# 查看到,es没有实例
docker ps
# 查看到,es过去的确启动过,记住容器id前三位
docker ps -a
# 启动实例,84c是容器id前三位
docker start 84c
# 查看实例
docker ps
# 过一段时间后,再次查看实例,如果实例还在运行就可以了
docker ps
# 查看日志确认一下,检查有无报错 ,84c是容器id前三位
docker logs 84c
2
3
4
5
6
7
8
9
10
11
12
没有报错,就去访问一下ES端口。
# 使用Postman测试ES
ES创建成功后,可以用kibana可视化工具来管理,也可以使用postman来访问。
# 获取ES信息
请求:http://192.168.56.10:9200
返回
{
"name": "b7e89eef8655",
"cluster_name": "elasticsearch",
"cluster_uuid": "9sCmhiRITKmNyi7XZprE8Q",
"version": {
"number": "7.6.2",
"build_flavor": "default",
"build_type": "docker",
"build_hash": "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date": "2020-03-26T06:34:37.794943Z",
"build_snapshot": false,
"lucene_version": "8.4.0",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查询节点相关信息
请求:http://192.168.56.10:9200/_cat/nodes
返回
127.0.0.1 51 93 4 0.00 0.11 0.12 dilm * b7e89eef8655
这个*代表是主节点,后面再拓展
# 创建Kibana实例
docker run --name kibana \
-e ELASTICSEARCH_HOST=http://192.168.56.10:9200 \
-p 5601:5601 \
--restart=always \
-d kibana:7.6.2
2
3
4
5
http://192.168.56.10:9200 这里一定要改为自己虚拟机的地址
这里也可以不指定虚拟机地址,去yml中修改地址
创建成功后,
# 访问Kibana端口
- http://192.168.56.10:5601/
# 如果Kibana启动失败
Kibana server is not ready yet
# 查看容器,发现Kibana仍然在启动,记住容器id前三位
docker ps
# 查看日志,e28是容器id前三位
docker logs e28
2
3
4
查看到日志No living connections,发现设置的IP地址并没生效,那么我们干脆修改配置文件
# 进入容器 e28是容器id前三位
docker exec -it e28 /bin/bash
# 查看容器下的文件
ls
# 进入config
cd config
# 查看config下的文件
ls
# 找到了yml文件了,接下来修改
# 进入修改文件模式
vi kibana.yml
2
3
4
5
6
7
8
9
10
11
12
找到host,修改为自己ES端口路径
# 按i进入编辑模式,修改路径
# 修改后,按ESC进入命令模式
:wq #退出并保存
# 退出docker容器
exit
# 重启kibana
docker restart e28
2
3
4
5
6
7
8
9
10
11
12
这时候稍等一会就可以访问Kibana端口了
- 如果还是报错,查看日志,发现是要求删除kibana索引
# 删除索引,注意ip地址和es访问地址一样
curl -XDELETE http://192.168.56.10:9200/.kibana*
# 删除成功后,重启kbiana
docer restart e28
2
3
4
# Kibana初始化
能够成功访问Kibana了,就说明已经成功启动实例了,接下来初始化。
- 是否导入默认数据,这里选择否,使用自己的数据
至此,Kibana已经安装成功!