什么是 Elasticsearch
Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTFul Web 接口。Elasticsearch 是用 Java 语言开发的,并作为 Apache 许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch 用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在 Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby 和许多其他语言中都是可用的。根据 DB-Engines 的排名显示,Elasticsearch 是最受欢迎的企业搜索引擎,其次是 Apache Solr,也是基于 Lucene。
传统方式安装 Elasticsearch
传统的安装方式都是用户通过 Elasticsearch 官网下载安装包,然后在宿主机上手动解压编译再安装,,其中的配置也是特别的繁琐,而且如果用户选择自己手动安装的话,是不能够在 root 用户下进行操作的,Elasticsearch 默认不允许 root 用户操作安装。所以这样的安装方式是特别难于管理的。
采用 Docker 部署的方式安装 Elasticsearch
随着 Docker 这种容器化管理的观念不断推行,这种部署方式逐渐被人们接收,其中很大一部分原因就是 Docker 的容器化管理实在是太爽了!!
接下来就跟大家说一下在 Docker 中到底应该怎样部署 Elasticsearch 服务。
- 搜索镜像:打开 DockerHub 官网 https://hub.docker.com/然后搜索 Elasticsearch 镜像
在这里可以查看 Elasticsearch 具体有哪些 Tag,我们可以选择自己想要的版本 pull 下来
- 拉取镜像:我选择 Tag 为 6.8.6 的版本,我们进入宿主机,直接输入
docker pull elasticsearch:6.8.6
然后 docker 就会去仓库拉取版本号为 6.8.6 的 Elasticsearch 镜像
等到下载完成的时候,我们在宿主机中输入
docker images
就可以看到宿主机中已经拉取到的镜像
- 运行镜像创建容器:
运行如下的命令:
docker run --name myelasticsearch -d -e --net host -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:6.8.6
--name指的是我们所创建的容器的名称
-d标识后台运行
--net host 指的是我们为这个容器指定的网络组为host
-p标识我们要做的端口映射 前面是宿主机端口,后面是容器端口
最后就是指定我们要为哪一个镜像创建容器
执行之后,我们输入
docker ps
发现没有我们创建的容器
打开日志查看详情:
docker logs myelasticsearch
提示我们内存权限不足
这时候我们回来重新创建容器,在创建容器之前,先将刚刚创建的容器删除
docker rm myelasticsearch
然后执行
docker run --name myelasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" --net host -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:6.8.6
这时候我们再看容器发现已经创建成功了,Docker 中 Elasticsearch 镜像默认是允许所有 IP 资源访问的,我们只需要把宿主机 9200 端口还有 9300 端口放开即可。
在宿主机中输入 IP:9200 如果出现以下内容,说明我们的 Elasticsearch 就部署成功了!
Docker 部署 Kibana
接下来,我们在宿主机中的 Docker 上再部署一个 Kibana 来管理 Elasticsearch
在 DockerHub 中搜索 Kibana
这里我们需要将 Kibana 的版本和 Elasticsearch 的版本统一才能管理
强调一下:版本一定要统一!版本一定要统一!版本一定要统一!
执行
docker pull kibana:6.8.6
拉取 Kibana 镜像
完成之后执行:
docker run --name kibana -e ELASTICSEARCH_URL=http://172.17.129.168:9200 -p 5601:5601 -d kibana:6.8.6
记住这里的 IP 地址只能填写宿主机的内网 IP,不能够填写 localhost 或者 127.0.0.1,这样会报错的
运行成功之后使用
docker ps
查看正在运行的容器
可以看到 Kibana 还有 Elasticsearch 都是正在运行的状态,可以看到 Kibana 正在监听 5601 端口,我们需要放开宿主机的 5601 端口才行。
打开浏览器输入 IP:5601,出现以下内容的话说明我们的 Kibana 部署成功!
安装 IK 分词器插件
安装分词器我们需要在创建的 Elasticsearch 容器内部进行,首先,进入到我们创建的容器
docker exec -it elasticsearch /bin/bash
然后在 https://github.com/medcl/elasticsearch-analysis-ik 中查看插件版本对应的 Elasticsearch 版本
由于我们的 Elasticsearch 是 6.8.6 版本的,所以只要是 6.x 版本的 IK 插件都是可以的
接下来开始下载并安装插件
我们采用以下这种安装方式来为 Elasticsearch 安装 IK 插件
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.4/elasticsearch-analysis-ik-6.5.4.zip
这个下载过程比较漫长(真的是巨长无比啊!!!!!!)
下载完成之后会自动挂载安装的啦,我们需要重启一次 Elasticsearch 容器才行。具体效果就不演示了(我还没下完 😰 )。
插件安装-更新
由于上次下载安装过程实在是太慢了,好几次终端都直接和宿主机断开连接了,于是我决定采用手动下载插件包上传到容器中来安装。
下载插件包
进入 IK 分词器的主页,找到 6.8.6 版本 https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.8.6
直接点击就可以下载,推荐大家用迅雷下载,浏览器内置下载引擎貌似还是很慢。
拷贝压缩包到容器
下载完成之后我们先把文件上传到宿主机中去,把压缩包先拷贝到容器中去。
这是我宿主机中插件包的位置
docker cp /usr/local/elasticsearch-analysis-ik-6.8.6.zip elasticsearch:/usr/share/elasticsearch/plugins
然后进入我们之前创建的 Elasticsearch 容器
docker exec -it elasticsearch /bin/bash
解压插件包
在解压之前我们先创建一个文件夹,然后把压缩包移动到里面起
mkdir /usr/share/elasticsearch/plugins/ik
mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-6.8.6.zip /usr/share/elasticsearch/plugins/ik
unzip elasticsearch-analysis-ik-6.8.6.zip
删除压缩包
解压完成之后我们删除原来的压缩包
最后退出容器,重启容器就可以用插件啦!我们来测试一下
本文到这里就正式结束啦,感谢各位观看!❤️
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于