dockerfile构建elasticsearch镜像安装ik中文分词器插件(代码片段)

new-life new-life     2022-12-09     609

关键词:

DockerFile构建ElasticSearch镜像安装IK中文分词器插件

为什么要安装IK中文分词器?

ES提供的分词是英文分词,对中文做分词时会拆成单字而不是词语,非常不好,因此索引信息含中文时需要使用中文分词器插件。

一、环境及文件准备

环境准备
  • VMWare版本:15.5.5
  • 操作系统:CentOS7
  • Docker版本:19.03.12
文件准备:
  • 拉取ElasticSearch镜像,版本:7.8.0
    docker pull elasticsearch:7.8.0
  • 下载中文分词器插件,版本:7.8.0
# 在Linux根目录创建docker文件夹并进入文件夹
mkdir /docker
cd /docker
# 下载IK插件文件(如果提示没有wget命令则先执行:`yum install -y wget`,再执行下载命令)
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip
# 可选项:wget下载过慢可先用浏览器将文件下载到本地再上传到Linux(如果提示没有rz命令则先执行:`yum install -y lrzsz`,再执行上传命令,选择elasticsearch-analysis-ik-7.8.0.zip文件)
rz
# 解压(如果提示没有unzip命令则先执行:`yum install -y unzip`,再执行下载命令)
unzip elasticsearch-analysis-ik-7.8.0.zip -d elasticsearch-analysis-ik

注意:ElasticSearch镜像版本要与IK分词器一致(我使用elasticsearch:7.8.1镜像与elasticsearch-analysis-ik-7.8.0插件,构建镜像后无法使用)

二、构建镜像并启动:

1. 创建DockerFile:进入docker文件夹执行vi DockerFile
FROM elasticsearch:7.8.0
ADD elasticsearch-analysis-ik /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik
2. 创建镜像:在docker文件夹路径下执行docker build -f DockerFile -t elasticsearch-ik:7.8.0 .

镜像构建成功:

[root@localhost elasticsearch-ik]# docker build -f DockerFile -t elasticsearch-ik:7.8.0 .
Sending build context to Docker daemon  14.39MB
Step 1/2 : FROM elasticsearch:7.8.0
 ---> 121454ddad72
Step 2/2 : ADD elasticsearch-analysis-ik /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik
 ---> Using cache
 ---> 2af03d5426d3
Successfully built 2af03d5426d3
Successfully tagged elasticsearch-ik:7.8.0
3. 创建并启动容器

docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch_test elasticsearch-ik:7.8.0

4. 验证ElasticSearch启动成功:curl localhost:9200

显示如下即启动成功:

[root@localhost docker]# curl localhost:9200

  "name" : "9f832bbeb44a",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "8GAjHyQEToO6PMl8dDoemQ",
  "version" : 
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  ,
  "tagline" : "You Know, for Search"

三、测试分词器:

这里使用的是postman
请求url:http://192.168.0.199:9200/_analyze
请求方式:post
在请求体body中请求入参格式:


    "analyzer": "chinese",
    "text": "今天是个好日子"

参数说明:
analyzer:可填项有:chinese|ik_max_word|ik_smart,其中chinese是ES的默认分词器选项,ik_max_word(最细粒度划分)和ik_smart(最少划分)是ik中文分词器选项
text:要进行分词操作的内容

1. 测试使用默认分词器

    "analyzer": "chinese",
    "text": "今天是个好日子"

结果:


    "tokens": [
        
            "token": "今",
            "start_offset": 0,
            "end_offset": 1,
            "type": "<IDEOGRAPHIC>",
            "position": 0
        ,
        
            "token": "天",
            "start_offset": 1,
            "end_offset": 2,
            "type": "<IDEOGRAPHIC>",
            "position": 1
        ,
        
            "token": "是",
            "start_offset": 2,
            "end_offset": 3,
            "type": "<IDEOGRAPHIC>",
            "position": 2
        ,
        
            "token": "个",
            "start_offset": 3,
            "end_offset": 4,
            "type": "<IDEOGRAPHIC>",
            "position": 3
        ,
        
            "token": "好",
            "start_offset": 4,
            "end_offset": 5,
            "type": "<IDEOGRAPHIC>",
            "position": 4
        ,
        
            "token": "日",
            "start_offset": 5,
            "end_offset": 6,
            "type": "<IDEOGRAPHIC>",
            "position": 5
        ,
        
            "token": "子",
            "start_offset": 6,
            "end_offset": 7,
            "type": "<IDEOGRAPHIC>",
            "position": 6
        
    ]

2. 测试使用ik分词器ik_smart

    "analyzer": "ik_smart",
    "text": "今天是个好日子"

结果:


    "tokens": [
        
            "token": "今天是",
            "start_offset": 0,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 0
        ,
        
            "token": "个",
            "start_offset": 3,
            "end_offset": 4,
            "type": "CN_CHAR",
            "position": 1
        ,
        
            "token": "好日子",
            "start_offset": 4,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 2
        
    ]

3. 测试使用ik分词器ik_max_word

    "analyzer": "ik_max_word",
    "text": "今天是个好日子"

结果:


    "tokens": [
        
            "token": "今天是",
            "start_offset": 0,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 0
        ,
        
            "token": "今天",
            "start_offset": 0,
            "end_offset": 2,
            "type": "CN_WORD",
            "position": 1
        ,
        
            "token": "是",
            "start_offset": 2,
            "end_offset": 3,
            "type": "CN_CHAR",
            "position": 2
        ,
        
            "token": "个",
            "start_offset": 3,
            "end_offset": 4,
            "type": "CN_CHAR",
            "position": 3
        ,
        
            "token": "好日子",
            "start_offset": 4,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 4
        ,
        
            "token": "日子",
            "start_offset": 5,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 5
        
    ]







dockerfile构建容器

使用Dockerfile构建容器Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应 Linux 下面的一条命令。Docker 程序将这些 Dockerfile 指令翻译真正的 Linux 命令。Dockerfile有自己书... 查看详情

Dockerfile 构建突然失败

】Dockerfile构建突然失败【英文标题】:Dockerfilebuildfailsallofasudden【发布时间】:2020-06-2518:30:56【问题描述】:我正在尝试解决在dockerfile下运行构建命令时的构建问题,例如我得到的错误:1./bin/sh:1:/opt/conda/bin/pip:notfoundThecommand\'/b... 查看详情

dockerfile07--dockerfile构建python(代码片段)

文章目录一、Dockerfile搭建python1、创建python目录2、编写dockerfile文件3、修改网站内容一、Dockerfile搭建python#1、创建python目录#2、编写Dockerfilepython文件#3、访问测试1、创建python目录[root@ccse~]#mkdirpython[root@ccse~]#cdpython/2、编写doc... 查看详情

根据dockerfile构建镜像(代码片段)

根据Dockerfile构建出一个镜像Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docke... 查看详情

linux12-dockerfile06-->dockerfile构建djiango和java(代码片段)

文章目录Dockerfile一、Dockerfile编写案例二、Dockerfile搭建django1、创建django目录2、编写dockerfile文件三、Dockerfile搭建java1、创建java目录2、上传java安装包3、编译java4、查看java页面Dockerfile一、Dockerfile编写案例1、Dockerfile指令是按照从... 查看详情

docke--dockerfile构建docker镜像(代码片段)

一、Dockerfile简介及原理1.简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。2.构建三步骤 1.编写Dockerfile文件2.dockerbuild3.dockerrun3.DockerFile文件构建过程解析1:每条保留字指令都必须为大写字母且... 查看详情

了解多阶段 DockerFile 构建

】了解多阶段DockerFile构建【英文标题】:UnderstandingmultistageDockerFilebuilds【发布时间】:2020-12-1918:15:42【问题描述】:我是Docker新手。我的项目有以下目录结构docker-compose.yml|-services|-orders|-DockerFile我正在使用具有以下内容的标准AS... 查看详情

使用dockerfile构建镜像

Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖... 查看详情

由于端口限制,无法构建 dockerfile

】由于端口限制,无法构建dockerfile【英文标题】:Cannotbuilddockerfileduetoportrestrictions【发布时间】:2019-12-2221:47:11【问题描述】:我在企业互联网上。我们只能使用某些端口/通过代理连接。我正在尝试运行以下简单的docker命令:d... 查看详情

Docker 构建不工作 - 它没有找到 Dockerfile

】Docker构建不工作-它没有找到Dockerfile【英文标题】:Dockerbuildisnotworking-ItdoesnotfindtheDockerfile【发布时间】:2021-11-0215:10:18【问题描述】:我正在尝试使用docker文件构建一个quarkus容器,但看起来dockerbuild没有找到Dockerfile。我已经... 查看详情

dockerfile指令

DockerFile是用来构建docker镜像的文件!实际上是个命令脚本构建步骤:1、编写一个dockerfile文件。2、dockerbulid 构建成为一个镜像。3、docker run运行镜像。4、dockerpush 发布镜像(DockerHub、阿里云镜像仓库)。DockerFile构建... 查看详情

创建dockerfile,构建jdk+tomcat环境

创建Dockerfile,构建jdk+tomcat环境Dockerfile文件[[email protected]jdk]#catDockerfile#pullbaseimageFROMubuntuMAINTAINER andy.liu"[email protected]"#updatesourceRUNecho"debhttp://archive.ubuntu.co 查看详情

dockerfile(dockerfile的详细使用通过dockerfile构建apache镜像)(代码片段)

文章目录1Dockerfile介绍2基本结构2.1Dockerfile分为四部分3Dockerfile基础知识4Dockerfile常用指令4.1FROM4.2LABELMAINTAINER4.3RUN4.4CMD4.5EXPOSE4.6ENV4.7COPY4.8ADD4.9ENTRYPOINT4.10VOLUME4.11USER4.12WORKDIR4.13ONBUILD5构建镜像注意事项6使用Dockerfile构建apache镜像1Docke... 查看详情

Docker 从 Dockerfile 构建,具有更多内存

】Docker从Dockerfile构建,具有更多内存【英文标题】:DockerbuildfromDockerfilewithmorememory【发布时间】:2018-01-0322:47:20【问题描述】:如何从具有更多内存的Dockerfile中dockerbuild?这与AllowmorememorywhendockerbuildaDockerfile的问题不同本地安装... 查看详情

为 gcloud 构建提交指定 Dockerfile

】为gcloud构建提交指定Dockerfile【英文标题】:SpecifyDockerfileforgcloudbuildsubmit【发布时间】:2020-02-0803:35:09【问题描述】:我了解gcloud使用在源(.)的根目录中指定的Dockerfile,如下所示:gcloudbuildssubmit--taggcr.io/[PROJECT_ID]/quickstart-im... 查看详情

dockerfile构建镜像-基础(代码片段)

Dockerfile#thisisadockerfileFROMcentos:7MAINTAINERXD123456@qq.comRUNecho"正在构建镜像!!!"WORKDIR/home/xdclassCOPY123.txt/home/xdclassRUNyuminstall-ynet-toolsdockerbuild-tmycentos:v3dockerimages进入验证 查看详情

为啥我不能在 Dockerfile 中的 FROM 之后再次使用构建参数?

】为啥我不能在Dockerfile中的FROM之后再次使用构建参数?【英文标题】:Whycan\'tIusethebuildargagainafterFROMinaDockerfile?为什么我不能在Dockerfile中的FROM之后再次使用构建参数?【发布时间】:2018-10-2120:12:06【问题描述】:我正在使用Dock... 查看详情

dockerfile多阶段构建

FROMopenresty/openresty:1.13.6.2-2-centosARGRESTY_YUM_REPO="http://mirrors.aliyun.com/repo/Centos-7.repo"ARGWORK_DIR="/usr/local/openresty/nginx"ARGUSER=rootRUNsed-i's/plugins=1/plugins=0/'/etc/yum. 查看详情