从零开始的Elasticsearch学习——Elasticsearch和Kibana的安装
一、前言
本文介绍了在CentOS Linux系统Doker环境下安装Elasticsearch(7.5.0)与Kibana(7.5.0),并进行简单的使用。
Elasticsearch官方的安装文档在这里:官方文档
二、安装Docker
通过以下命令进行安装:
sudo yum install docker //安装
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
//安装指定版本
sudo docker -v //查看docker版本,确定有没有安装成功
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //配置镜像源
sudo docker info //看有没有设置成功mirror:
$ sudo systemctl start docker //启动
三、拉取Elasticsearch镜像
3.1创建ES数据存储,插件,日志的目录
mkdir my/dockerData/elasticsearch/data
mkdir my/dockerData/elasticsearch/plugins
mkdir my/dockerData/elasticsearch/logs
解释:docker容器内是独立的空间,拥有自己的环境和文件系统,访问不便,我们需要在外部创建文件夹与内部对应文件夹挂载(像快捷方式),这样两边内容同步,向Elasticsearch容器安装插件只需下载在上面plugins文件同步容器中,同样容器内日志和数据也可同步到外部文件
3.2权限挂载
chmod 777 /my/dockerData/elasticsearch/{plugins,data,logs}
解释:对创建的文件给予权限,没有这个步骤可能出错
3.2创建network
docker network create elastic
解释:创建network用来和kibana交互,在同一个网络才可以交互
3.3拉取指定版本镜像
docker pull elasticsearch:7.5.0
四、运行Elasticsearch容器
拉取镜像后,你可以使用以下命令来运行Elasticsearch容器:
docker run -d \ # 在后台运行容器
--name es \ # 将容器命名为es
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ # 设置Elasticsearch的JVM初始堆内存和最大堆内存为512MB
-e "discovery.type=single-node" \ # 设置Elasticsearch的集群发现类型为单节点模式
-v /my/dockerData/elasticsearch/data:/usr/share/elasticsearch/data \ # 将宿主机上的/my/dockerData/elasticsearch/data目录挂载到容器内的/usr/share/elasticsearch/data目录,用于存储数据
-v /my/dockerData/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ # 挂载插件目录
-v /my/dockerData/elasticsearch/logs:/usr/share/elasticsearch/logs \ # 挂载日志目录
--privileged \ # 给容器额外的权限,使其可以访问宿主机上的设备
--network elastic \ # 将容器连接到名为elastic的自定义网络
-p 9200:9200 \ # 将容器的9200端口映射到宿主机的9200端口,用于HTTP通信
-p 9300:9300 \ # 将容器的9300端口映射到宿主机的9300端口,用于节点间通信
elasticsearch:7.5.0 # 指定要运行的Elasticsearch镜像及其版本为7.5.0
注意:-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"设置超过服务器最大内存会报错
容器启动后,可以通过访问
http://<你的服务器IP>:9200/
来验证Elasticsearch是否成功安装并运行。如果返回了JSON格式的响应,安装成功。
五、拉取并运行Kibana
docker pull kibana:7.5.0 # 拉取Kibana的Docker镜像,版本为7.5.0
docker run -d \ # 在后台运行容器
--name kibana \ # 将容器命名为kibana
--network elastic \ # 将容器连接到名为elastic的Docker网络
-e ELASTICSEARCH_HOSTS=http://es:9200 \ # 设置环境变量,指定Elasticsearch的主机地址和端口
-p 5601:5601 \ # 将容器的5601端口映射到宿主机的5601端口,用于访问Kibana的Web界面
kibana:7.5.0 # 指定要运行的Kibana镜像及其版本为7.5.0
解释:-e ELASTICSEARCH_HOSTS=http://es:9200中,因为在同一个网络中,可以使用es代替主机地址
**注意:**使用
--link
选项来链接容器在生产环境中已经不推荐使用,所以使用 Docker 网络–network
当Kibana容器运行之后,用浏览器打开服务器的ip:5601
,访问Kibana web界面,用云服务的同学不要忘了配置上云服务配置安全组规则。
Kibana中文配置
我们发现Kibana
是英文面板,看起来不是很方便,但Kibana
是支持中文配置,所以我们可以把Kibana
配置成中文版,便于我们操作。
切换中文操作如下:
#在已经运行的kibana容器中执行一个交互式的bash shell,简单理解进入容器操作
docker exec -it kibana /bin/bash
#进入配置文件目录
cd /usr/share/kibana/config
#编辑文件kibana.yml
vi kibana.yml
#在最后一行添加如下配置
i18n.locale: zh-CN
#保存退出
exit
#退出容器
exit
#并重启容器
docker restart kibana
六、安装ik插件
下载ik插件:ik插件
创建文件夹ik,将下载的插件ik解压后的文件,放到新建的ik文件夹中,然后将ik文件上传到云服务,我上传到/tmp/文件夹下。
然后复制到自己挂载的plugins中,比如我的是/my/dockerData/elasticsearch/plugins
七、小知识
1.运行容器不成功?
可以使用
docker logs
命令来查看容器的日志输出来确定问题docker logs 容器名或CONTAINER ID #docker logs es
2.Linux使用普通用户组没有权限报错
sudo gpasswd -a username docker #将普通用户username加入到docker组中
3.docker exec -it es /bin/bash 进入容器内操作
-it:与容器交互 -i:允许你与容器交互 -t:为容器进程分配伪终端,可以在终端交互
4.Elasticsearch8以上不支持java8版本,elasticsearch内置 jdk,如果不使用内置jdk要使用本地jdk,jdk1.8与es8以上版本不匹配
5.云服务记得配置安全组规则