ES、kibana和IK分词器的docker安装

ElasticSearch、kibana和IK分词器docker安装

一、docker方式安装

安装低版本的 es,因为新版涉及安全验证等,很麻烦,主要原因是新版对应的IK分词器还没有发布呢。。。。

关于docker安装可以查看文章docker安装并配置外网代理

1. 创建网络

[root@glnode08 ~]# docker network create es-net
287b738b43d3eb35787b0d1a531ea375caed28736ecbd66b17c655f07281f214

2. 下载

下载的版本为 7.12.1,因为 ES8 以上的版本中包含默认的安全配置,使用docker安装的话,修改此部分配置格外麻烦,并且我尝试了安装 8.12.0 的版本,如果docker运行时你的 ES 取消了安全配置,可是在使用 kibana 时,依然会有安全配置问题(具体为登录5601端口是依然需要你提供token,可是我的es已经取消了安全认证,无法使用命令生成token),使用传统方式安装则只需要取消 ES 的安全认证,kibana 就可以直接使用。

[root@glnode08 ~]# docker pull kibana:7.12.1
[root@glnode08 ~]# docker pull elasticsearch:7.12.1

3. 运行

先创建对应的挂载目录

#1、创建Elasticsearch配置文件夹
mkdir -p /home/elasticsearch/config

#2、创建Elasticsearch数据文件夹
mkdir -p /home/elasticsearch/es-data

#3、创建Elasticsearch插件文件夹(如:ik)
mkdir -p /home/elasticsearch/es-plugins

#说明:目的将CentOS本地的文件夹映射到Elasticsearch容器,以实现容器数据的持久化到CentOS本地,以及通过CentOS本地文件夹内容的修改同步到容器

#创建并写入elasticsearch.yml配置,注意:http.host: 0.0.0.0 冒号后有一空格
echo "http.host: 0.0.0.0">>/home/elasticsearch/config/elasticsearch.yml

修改权限一定要修改权限,不然后面会有问题

chmod -R 777 /usr/local/data-docker/elasticsearch/

es 运行命令

docker run -d 
	--name es 
	-e "discovery.type=single-node" 
	-v /home/elasticsearch/es-data:/usr/share/elasticsearch/data 
	-v /home/elasticsearch/es-plugins:/usr/share/elasticsearch/plugins 
	-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
	--privileged 
	--network es-net 
	-p 9200:9200 
	-p 9300:9300 
	elasticsearch:7.12.1

kibana 运行命令

docker run -d 
	--name kibana 
	-e ELASTICSEARCH_HOSTS=http://es:9200 
	--network=es-net 
	-p 5601:5601 
	kibana:7.12.1

可以访问对应的地址测试

4. 安装 IK 分词器

IK 分词器下载链接,用于支持智能化的中文分词,一定要找到和你的 es 版本完全相同的版本号。离线下载下来,放入你的对应的插件挂在目录即可

4.1 查看对应数据卷
[root@glnode08 es-plugins]# docker inspect -f '{{ .Mounts }}' es
[{bind  /home/elasticsearch/es-data /usr/share/elasticsearch/data   true rprivate} {bind  /home/elasticsearch/es-plugins /usr/share/elasticsearch/plugins   true rprivate}]
4.2 解压并上传到挂载目录

可以看到我们对应的本地挂在目录,在/home/elasticsearch/es-plugins/目录下创建ik目录,并且把解压的文件全部放进去,然后重启容器

效果如下

image-20240123182555680

4.3 重启容器
docker restart es
4.4 测试分词器
POST /_analyze
{
  "text": "亚索学习java太棒了",
  "analyzer": "standard"
}

POST /_analyze
{
  "text": "亚索学习java太棒了",
  "analyzer": "ik_smart"
}

image-20240123182912820

可以正确分词了!