在上一篇文章中讲到,我们利用docker安装了es和kibana,下面我们讲解一下在安装es时把ik分词器这个插件集成进去,首先我们编写一个dockerfile文件,自定义一个es镜像,当然这个镜像肯定集成了ik分词器,具体步骤如下:
1、在github上下载ik分词器压缩包(我这里不在linux里面下载的原因是因为网速差,超时,试过几次失败后,果断翻墙到github下载),具体链接为:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip
2、下载完ik分词器的压缩包后,上传到linux里的某个文件夹下,并改名为ik.zip,在当前文件夹下创建Dockerfile文件,文件内容如下,具体的注释很详细,我就不作过多说明
#使用官方 Elasticsearch 镜像作为基础镜像
FROM docker.elastic.co/elasticsearch/elasticsearch:7.6.0
# 在容器内创建目录用于存放 IK 分词器插件文件
RUN mkdir /usr/share/elasticsearch/plugins/ik
# 复制 IK 分词器插件压缩包到容器内
COPY ik.zip /usr/share/elasticsearch/plugins/ik/ik.zip
# 进入容器内的插件目录并解压 IK 分词器插件压缩包
RUN cd /usr/share/elasticsearch/plugins/ik && \
unzip ik.zip && \
rm ik.zip
# 修改解压后的目录权限(如果需要)
RUN chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins/ik
3、在当前目录下执行如下命令
docker build -t my_es_image .
4、修改上一篇文章里面的docker-compose.yml文件(替换里面的es镜像来源,选用我们自定义的es镜像)
version: '3'
services:
elasticsearch:
image: my_es_image:latest
container_name: elasticsearch
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
ports:
- "9200:9200"
networks:
- elastic
kibana:
image: docker.elastic.co/kibana/kibana:7.6.0
container_name: kibana
ports:
- "5601:5601"
networks:
- elastic
networks:
elastic:
driver: bridge
5、重新启动服务
6、在kibana里面执行创建索引操作(创建一个名为news的索引,字段有title、content、name,其中title用ik_smart分词,content用ik_max_word分词,name不分词)
PUT /news
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_smart"
},
"content": {
"type": "text",
"analyzer": "ik_max_word"
},
"name":{
"type":"keyword"
}
}
}
}
7、在索引管理那查看news索引的mapping,如下所示,说明ik分词器集成成功