在上一篇文章中讲到,我们利用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:latestcontainer_name: elasticsearchenvironment:- discovery.type=single-node- ES_JAVA_OPTS=-Xms512m -Xmx512mports:- "9200:9200"networks:- elastickibana:image: docker.elastic.co/kibana/kibana:7.6.0container_name: kibanaports:- "5601:5601"networks:- elasticnetworks: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分词器集成成功