Elasticsearch 是一个高度可扩展且开源的全文检索和分析引擎。它可以让您快速且近实时地存储,检索以及分析海量数据。它通常用作那些具有复杂搜索功能和需求的应用的底层引擎或者技术。


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


一、Centos7启动docker,并拉取Elasticsearch

提示:还没有在虚拟机中安装docker的同学们,可以先查看我的这份博客啊:Centos7安装docker,配置阿里云镜像加速.

1、查看正在运行的容器

docker ps

如图,我目前docker只安装了redis 以及 mysql
在这里插入图片描述
2、查看下载的镜像

docker images

我电脑中下载的镜像,也只有redis 以及 mysql
在这里插入图片描述
3、拉取我们需要下载的elastic镜像

docker pull elasticsearch:7.4.2

如图,就是下载成功
在这里插入图片描述
我们再查看一下docker下载的镜像,就能看到elasticsearch
在这里插入图片描述

二、拉取 kibana 镜像,可视化检索数据

1、拉取我们需要下载的kibana 镜像

docker pull kibana:7.4.2

如图,就是下载成功
在这里插入图片描述
同样,我们再查看一下docker下载的镜像,就能看到kibana,版本与elasticsearch保持一致
在这里插入图片描述

三、配置并启动elasticsearch

1、首先检查一下我们的虚拟机还有多少内存,虚拟机我是只给了1G的总内存

free -m

可用内存还剩326M,能满足安装需求
在这里插入图片描述
2、创建相关文件夹

# 在mydata文件夹下创建相关的文件夹,之后将docker内的配置文件等信息都挂在到外部的这个文件夹
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data

查看我们刚刚创建的文件夹,可以看到不仅有我之前创建的mysql、redis文件夹,还有刚刚新建的elasticsearch文件夹
在这里插入图片描述
3、将下面的配置写入elasticsearch.yml文件内,允许任何机器进行对它的访问

echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

如图,就成功将值写入elasticsearch.yml文件中,这是yml的键值对语法
在这里插入图片描述
4、继续添加配置,执行下面你的命令

命令解释
–name表示给这个容器起一个名字:elasticsearch
-p暴露两个端口,9200,9300
每行末尾的 \表示要换行
single-node表示单节点运行
ES_JAVA_OPTS指定初始占用64M内存,最大占用128M,不指定的话会将虚拟机卡死,觉得内存给小了可自己定义,比如512
-v挂载,将容器内的配置与外部的配置进行一一关联
-d后台启动指定镜像
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-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 \
-d elasticsearch:7.4.2

如图:出现这串标志就代表运行成功
在这里插入图片描述
5、但是,使用 docker ps 命令却看不到启动的elasticsearch服务,这时,我们可以查看错误日志

# 查看错误日志
docker logs elasticsearch

根据排查发现,是data目录被拒绝访问,原因是我们挂载到外面的目录的权限不够。
在这里插入图片描述
6、给挂载到外面的elasticsearch文件夹,提升权限

chmod -R 777 /mydata/elasticsearch/

执行完会发现elasticsearch文件夹下的所有目录均为可读可写可执行
在这里插入图片描述
7、重新启动elasticsearch

# 1、显示所有的容器,包括未运行的
docker ps -a
# 2、启动elasticsearch
docker start +服务的id(只要能保证唯一性,简写就行)
# 3、列出正在运行的容器
docker ps 

在这里插入图片描述
8、当我们在本地电脑上输入虚拟机地址加上elasticsearch的端口号,能出现下面的json串,就代表安装成功![ 样式就不用介意啦,我只是在浏览器上安装了json插件美化了一下 ]
在这里插入图片描述

四、配置并启动Kibana

1、根据下面的命令,启动kibana,查elastic的IPAddress
【注意:我尝试过多次,其实查elastic的IPAddress 并不友好,因为每次重启虚拟机这个地址都会变,大家也可以试试用自己的虚拟机地址试试】

# XXXX代表的是elastic的容器id 我这里是:26c728ad5f86 
docker inspect XXXX|grep IPAddress  

得到 IPAddress 为:172.17.0.4
在这里插入图片描述

命令解释
–name表示给这个容器起一个名字:kibana
-e修改紧跟在后面的参数
-p映射kibana的端口号,5601
-d后台启动指定镜像
# 这个192.168.10.10是我的虚拟机地址,如果启动失败,可以换成上面查的查elastic的IPAddress:我的是172.17.0.4
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.10.10:9200 -p 5601:5601 -d kibana:7.4.2

如图,kibana成功启动
在这里插入图片描述

2、在浏览器访问kibana
发现提示说:服务还未启动。
在这里插入图片描述
3、查看kibana日志,并没有发现报错信息

docker logs 135【请将135改为自己的kibanaid】

再回到浏览器核对时,发现可视化界面已经出来了,查看虚拟机还剩多少内存时,发现可用内存为46M
应该是虚拟机内存小了导致启动有点慢,但是好在安装成功😂
在这里插入图片描述


五、安装ik分词器

1、首先,我们从GitHub下载对应版本的压缩包
地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
找到7.4.2版本的压缩包
在这里插入图片描述
2、使用文件传输工具将这个压缩包放到虚拟机的 /mydata/elasticsearch/plugins 目录下
我这里使用的工具是 xftp
在这里插入图片描述
3、由于我们在之前对此目录进行过挂载,所以此时dock内部的elasticsearch同样具有此插件

# 进入ES控制台,XXXXX指ES的ID
docker exec -it XXXXXXXX /bin/bash

在这里插入图片描述
4、退出docker,返回到**/mydata/elasticsearch/plugins** 目录,解压此插件

# 解压命令
unzip elasticsearch-analysis-ik-7.4.2.zip 

我这里提示命令未找到,所以我还是选择在本地解压好再传进去已经解压的 ik
在这里插入图片描述

5、查看传输好的插件并修改 ik目录的权限

chmod -R 777 ik/

在这里插入图片描述
6、检查ik分词器是否安装成功

# 1、进入docker内的elasticsearch内的bin目录中
docker exec -it 26c /bin/bash
cd bin/
# 2、执行【列出安装好的ES插件】目录
elasticsearch-plugin list

如图所示,即为安装成功
在这里插入图片描述
7、退出docker,重启elasticsearch服务

docker restart elasticsearch

如图即为重启成功,之后便可正常使用啦
在这里插入图片描述
8、验证 ik 的效果

六、总结

最后附上elasticSearch相关命令

命令描述
GET /_cat/nodes查看所有节点
GET /_cat/health查看es健康状况
GET /_cat/master查看主节点
GET /_cat/indices查看所有索引 show databases;

设置开机启动 elasticsearch

docker update elasticsearch --restart=always

设置开机启动 kibana

docker update kibana --restart=always

取消设置的话,always 改为 no 就好了,同样支持下面的写法
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐