docker自定义elasticsearch镜像——集成中文分词器smartcn

8 篇文章 0 订阅
6 篇文章 0 订阅

前言。。。

翻遍百度、谷歌、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 <wangsen961225@163.com>

#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/

构建镜像

  1. 在Dockerfile文件所在目录下使用如下命令(注意:最后有一个点 . 
    docker build -t elasticsearch-with-smartcn:2.4.6 .

     

  2. 构建成功后,执行命令docker history elasticsearch-with-smartcn:2.4.6查看构建信息,如下:
    Show the history of an image
    [root@localhost 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               
    

     

检测是否安装成功

  1. 使用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

     

  2. 在该文件所在文件夹下使用如下命令启动:
    docker-compose -f elasticsearch.yml(你的YAML文件命名) up
  3. 启动结果如下:

验证分词器效果

假设docker所在电脑IP是192.168.134.130,在谷歌浏览器head插件上连接elasticsearch并执行查询

最后可将此镜像上传仓库以便重复使用?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值