Docker安装部署[8.x]版本Elasticsearch+Kibana+IK分词器

文章目录

  • 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用户修改权限

Docker安装部署[8.x]版本Elasticsearch+Kibana+IK分词器_第1张图片

我这是挂载在/和/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,重启容器完成。

你可能感兴趣的:(docker,elasticsearch,后端,容器)