docker自定义elasticsearch镜像 之 带中文分词器smartcn插件的elasticsearch
前言。。。
翻遍百度、谷歌、bing也没找到docker下给elasticsearch安装smartcn的资料,全是IK和拼音的,只好拿出我这只会几个简单命令的本事参考、观摩、尝试...参考、观摩、尝试...参考、观摩、尝试......最终熬出结果┭┮﹏┭┮
编写Dockerfile
以下是我编写的Dockerfile文件内容,注释较为详细不再赘述
# Docker image of elasticsearch with smartcn tokenizer
# VERSION 2.4.6
# Author: SenWang
#基础镜像使用elasticsearch:2.4.6
FROM elasticsearch:2.4.6
#作者
MAINTAINER SenWang <[email protected]>
#es插件目录
ENV ES_PLUGINS_PATH /usr/share/elasticsearch/plugins
#定义存放smartcn分词器文件的目录
ENV SMARTCN_SRC_COMPILE_PATH /opt/smartcn_build
#创建存放smartcn分词器文件的目录
RUN mkdir $SMARTCN_SRC_COMPILE_PATH && \
#进入编译smartcn分词器文件的目录
cd $SMARTCN_SRC_COMPILE_PATH && \
#下载smartcn包
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/analysis-smartcn/2.4.6/analysis-smartcn-2.4.6.zip && \
#解压源码包
unzip analysis-smartcn-2.4.6 -d analysis-smartcn&& \
#构建成功后,将文件移动到插件目录
mv analysis-smartcn $ES_PLUGINS_PATH/
构建镜像
- 在Dockerfile文件所在目录下使用如下命令(注意:最后有一个点 . )
docker build -t elasticsearch-with-smartcn:2.4.6 .
- 构建成功后,执行命令docker history elasticsearch-with-smartcn:2.4.6查看构建信息,如下:
Show the history of an image [[email protected] elasticsearch-with-smartcn]# docker history elasticsearch-with-smartcn:2.4.6 IMAGE CREATED CREATED BY SIZE COMMENT acae22f4dee2 40 minutes ago /bin/sh -c mkdir $SMARTCN_SRC_COMPILE_PATH &… 7.22MB 6eeaec073d30 41 minutes ago /bin/sh -c #(nop) ENV SMARTCN_SRC_COMPILE_P… 0B 21cb0c7891cc 2 hours ago /bin/sh -c #(nop) ENV ES_PLUGINS_PATH=/usr/… 0B d2e1b6c22ae4 2 hours ago /bin/sh -c #(nop) MAINTAINER BolingCavalry … 0B 5e9d896dc62c 6 months ago /bin/sh -c #(nop) CMD ["elasticsearch"] 0B <missing> 6 months ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B <missing> 6 months ago /bin/sh -c #(nop) EXPOSE 9200/tcp 9300/tcp 0B <missing> 6 months ago /bin/sh -c #(nop) COPY file:251082110c6dbdf8… 741B <missing> 6 months ago /bin/sh -c #(nop) VOLUME [/usr/share/elasti… 0B <missing> 6 months ago /bin/sh -c #(nop) COPY dir:5ec5fadebeaa388fd… 491B <missing> 6 months ago /bin/sh -c set -ex && for path in ./data … 0B <missing> 6 months ago /bin/sh -c #(nop) WORKDIR /usr/share/elastic… 0B <missing> 6 months ago /bin/sh -c #(nop) ENV PATH=/usr/share/elast… 0B <missing> 6 months ago /bin/sh -c set -x && dpkg-divert --rename … 32.2MB <missing> 6 months ago /bin/sh -c #(nop) ENV ELASTICSEARCH_DEB_VER… 0B <missing> 6 months ago /bin/sh -c #(nop) ENV ELASTICSEARCH_VERSION… 0B <missing> 6 months ago /bin/sh -c set -x && apt-get update && apt-… 2.46MB <missing> 6 months ago /bin/sh -c set -ex; key='46095ACC8548582C1A… 1.22kB <missing> 6 months ago /bin/sh -c set -x && wget -O /usr/local/bin… 1.29MB <missing> 6 months ago /bin/sh -c #(nop) ENV GOSU_VERSION=1.10 0B <missing> 6 months ago /bin/sh -c /var/lib/dpkg/info/ca-certificate… 355kB <missing> 6 months ago /bin/sh -c set -ex; if [ ! -d /usr/share/m… 309MB <missing> 6 months ago /bin/sh -c #(nop) ENV CA_CERTIFICATES_JAVA_… 0B <missing> 6 months ago /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION=8… 0B <missing> 6 months ago /bin/sh -c #(nop) ENV JAVA_VERSION=8u181 0B <missing> 6 months ago /bin/sh -c #(nop) ENV JAVA_HOME=/docker-jav… 0B <missing> 6 months ago /bin/sh -c ln -svT "/usr/lib/jvm/java-8-open… 33B <missing> 6 months ago /bin/sh -c { echo '#!/bin/sh'; echo 'set… 87B <missing> 6 months ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0B <missing> 6 months ago /bin/sh -c apt-get update && apt-get install… 2.05MB <missing> 6 months ago /bin/sh -c set -ex; if ! command -v gpg > /… 7.8MB <missing> 6 months ago /bin/sh -c apt-get update && apt-get install… 23.2MB <missing> 6 months ago /bin/sh -c #(nop) CMD ["bash"] 0B <missing> 6 months ago /bin/sh -c #(nop) ADD file:58d5c21fcabcf1eec… 101MB
检测是否安装成功
- 使用docker-compose启动镜像,编辑YAML文件如下:
version: '2' services: elasticsearch: image: elasticsearch-with-smartcn:2.4.6 volumes: - ~/volumes/jhipster/HDBack/elasticsearch/:/usr/share/elasticsearch/data/ ports: - 9200:9200 - 9300:9300
- 在该文件所在文件夹下使用如下命令启动:
docker-compose -f elasticsearch.yml(你的YAML文件命名) up
-
启动结果如下:
验证分词器效果
假设docker所在电脑IP是192.168.134.130,在谷歌浏览器head插件上连接elasticsearch并执行查询