文章目录
- Docker安装部署elasticsearch
- 拉取镜像
- 创建数据卷
- 创建网络
- elasticsearch容器,启动!
- 踩坑:虚拟机磁盘扩容
- Docker安装部署Kibana
- 拉取镜像
- Kibana容器,启动!
- 安装IK分词器
- 安装方式一:直接从github上下载
- 安装方式二
- 修改版本信息
Docker安装部署elasticsearch
在我发的上一个博客里记录了如何安装7.x版本的elasticsearch,我在跟着教学学习Java Rest Client的时候发现在elastic的官网上Java Rest Client已经被标注为过时了,elastc提供了全新的Elasticsearch Java API Client,作为程序员,应该勇于去尝试新技术,因此我决定继续尝试使用elasticsearch8.x版本。
elasticsearch已经出到8.10.4,官方推荐使用8.10.2,docker镜像有8.10.2但暂时没有8.10.4,IK分词器提供了8.10.4但没有提供8.10.2。
综合考虑之下原则8.10.2(毕竟官方都没提供8.10.4的镜像,我总不会闲到另辟蹊径自己打包8.10.4版本的镜像吧),IK分词器版本问题将使用一个sao操作解决
拉取镜像
docker pull elasticsearch:8.10.2
创建数据卷
一般来说,我们不希望在elasticsearch容器停止时丢失elasticsearch中的文件,因此我们创建一个数据卷来关联elasticsearch的data文件夹。在elasticsearch的使用中我们可能会安装各种插件,因此创建了另一个数据卷来关联elasticsearch的plugins文件夹
docker volume create es-data
docker volume create es-plugins
创建网络
一般来说,我们在使用elasticsearch的时候会结合kibana一起使用,为了他们能够正常关联,我们创建一个网络来连接他们
docker net create es-net
elasticsearch容器,启动!
因为我是单机启动,所以将discovery.type设置为single-node
es-net为上一步我们创建的网络名
docker run \
-d \
--name es \
--net es-net \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
elasticsearch:8.10.2
访问9200端口,这次你不会看到任何东西,因为8.x版本已经默认采用https了。
访问https://[yourIp]:9200,此时会显示这是一个不安全的连接,选择无视风险继续访问,此时浏览器会弹出一个窗口让你输入用户名和密码。
elastic是一个默认账户,而其密码是随机生成的。
首先我们进入elasticsearch容器中执行重置密码的命令
docker exec -it es /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
接下来新生成的密码将会打印到控制台。
将用户名和密码输入浏览器中的登录窗口。出现下面这串字符串就成功了。
{"name": "ab675a286e72","cluster_name": "docker-cluster","cluster_uuid": "ZdLfD65lQdKStAJi1yWMMQ","version": {"number": "7.17.13","build_flavor": "default","build_type": "docker","build_hash": "2b211dbb8bfdecaf7f5b44d356bdfe54b1050c13","build_date": "2023-08-31T17:33:19.958690787Z","build_snapshot": false,"lucene_version": "8.11.1","minimum_wire_compatibility_version": "6.8.0","minimum_index_compatibility_version": "6.0.0-beta1"},"tagline": "You Know, for Search"
}
踩坑:虚拟机磁盘扩容
我之前选择安装7.x版本的原因就是我执行重置密码时会显示集群状态为RED执行失败。我在查看了运行日志后发现是因为磁盘占用达到了预警线90%,只需给磁盘扩容就好了。
这里只分享图形界面的扩容方法,以ubuntu为例。
首先虚拟机关机,在虚拟机设置界面选择磁盘扩容。
开机,安装工具Gparted
apt-get install gparted
然后选择你要扩充的分区。点击左上角的扩容,如果显示无法给只读权限的分区扩容,右键查看该分区挂载在哪个路径下,使用root用户修改权限
我这是挂载在/和/var/snap/firefox/common/host-hunspell两个路径,所以输入以下命令结束。
mount -o remount -rw /
mount -o remount -rw /var/snap/firefox/common/host-hunspell
Docker安装部署Kibana
Kibana 是为 Elasticsearch设计的开源分析和可视化平台
拉取镜像
docker pull kibana:8.10.2
Kibana容器,启动!
ELASTICSEARCH_HOSTS环境变量为elasticsearch服务的地址,其中http://es:9200中的es是我们运行elasticsearch容器时起的别名
es-net为我们在之前创建的网络的名称
docker run \
-d \
--name kibana \
--net es-net \
-p 5601:5601 \
kibana:8.10.2
访问5601端口,会要求你输入elasticsearch的令牌
进入elasticsearch容器获取kibana的令牌
docker exec -it es /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
接下来会要求你输入六位数的kibana验证码,进入kibana容器获取验证码
docker exec -it kibana bin/kibana-verification-code
完成以上两步之后你只需要输入elasticsearch的用户名和密码就能正常使用kibana了
安装IK分词器
IK分词器没有8.10.2版本,我们先下载8.10.4版本,按之前的步骤来。
安装方式一:直接从github上下载
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip
安装方式二
之前我们将es-plugins数据卷挂载到了es容器内的plugins文件夹。
我们先使用魔法从github上下载
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip
然后将压缩包解压到数据卷对应的位置,然后重启elasticsearch容器即可。
修改版本信息
打开IK分词器所在的位置,打开 plugin-descriptor.properties 文件,将version和elasticsearch.version的值从8.10.4修改为8.10.2,重启容器完成。