0.前言

自己目前在学习探索Docker技术,这里简单实践一下创建带有ik分词器的Elasticsearch容器,涉及Dockerfile和docker-compose的使用。

1.创建容器

1.1 编写Dockerfile

新建elasticsearch目录并在其内创建Dockerfile文件

mkdir elasticsearch && elasticsearch
touch Dockerfile

Dockerfile中内容如下:

FROM elasticsearch:7.7.1
RUN yes | ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.1/elasticsearch-analysis-ik-7.7.1.zip

1.2 编写docker-compose.yml

elasticsearch文件夹同级目录下创建docker-compose.yml文件,内容为:

version: '3'
services:
    es-ik:
        build: ./elasticsearch
        image: elasticsearch-ik:7.7.1
        container_name: es_ik
        environment: 
            - discovery.type=single-node
        ports:
            - 9201:9200
            - 9301:9300

上面的端口映射到Host主机的9201和9301是因为系统上已经有Elasticsearch在运行了并且使用了默认的端口,这里需要再换一下端口。

1.3 打包镜像

上面的目录结构如下:

.
├── docker-compose.yml
└── elasticsearch
    ├── Dockerfile
    ├── elasticsearch-analysis-ik-7.7.1.zip
    └── test.es

执行如下命令以构建镜像:

docker-compose build

执行docker images可以看到镜像已经成功创建:

[root@localhost ~]# docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
elasticsearch-ik                                7.7.1               1812e4f405c5        3 hours ago         814 MB

2.测试容器

2.1 启动容器

执行如下命令以启动容器:

docker-compose up

2.2 查看容器启动状态

[root@localhost Docker]# ls
docker-compose.yml  elasticsearch
[root@localhost Docker]# docker-compose ps
Name               Command               State                       Ports                     
-----------------------------------------------------------------------------------------------
es_ik   /tini -- /usr/local/bin/do ...   Up      0.0.0.0:9201->9200/tcp, 0.0.0.0:9301->9300/tcp

2.3 测试elasticsearch服务

这里我是用的是VSCode的Elasticsearch for VSCode插件,该插件允许我们编写.es文件向es执行查询请求。

test.es内容如下:

POST _analyze
{
    "analyzer": "ik_smart",
    "text": "中华人民共和国"
}

POST _analyze
{
    "analyzer": "ik_max_word",
    "text": "中华人民共和国"
}

如图:

请求结果如下:

{
    "tokens": [
        {
            "token": "中华人民共和国",
            "start_offset": 0,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 0
        },
        {
            "token": "中华人民",
            "start_offset": 0,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 1
        },
        {
            "token": "中华",
            "start_offset": 0,
            "end_offset": 2,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "华人",
            "start_offset": 1,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "人民共和国",
            "start_offset": 2,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "人民",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 5
        },
        {
            "token": "共和国",
            "start_offset": 4,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "共和",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 7
        },
        {
            "token": "国",
            "start_offset": 6,
            "end_offset": 7,
            "type": "CN_CHAR",
            "position": 8
        }
    ]
}

3.参考

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Volantis 作为主题,总访问量为
载入天数...载入时分秒...
冀ICP备20001334号