docker自定義elasticsearch鏡像——集成中文分詞器smartcn

前言。。。

翻遍百度、谷歌、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/

構建鏡像

  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並執行查詢

最後可將此鏡像上傳倉庫以便重複使用?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章