ubuntu上部署docker+elasticsearch+ik中文分词器

本文详细记录了在Ubuntu上通过Docker部署Elasticsearch和IK中文分词器的步骤,包括Docker的安装、Elasticsearch的运行、Kibana的配置以及解决IK分词器安装问题的过程。

以前写网站都是直接在服务器上配置环境,最近感觉docker很火,就打算把之前的服务器都换成docker。在这里记录一下流程以及可能遇到的坑,以便日后想要翻阅的时候,不至于重新搜索遇到的问题。

首先是安装docker。

1. 卸载旧的docker版本

sudo apt-get remove docker \
               docker-engine \
               docker.io

2. 安装Ubuntu 可选内核模块(AUFS)

    如果不安装可能后期会出现一些莫名其妙的问题,所以建议安装。

sudo apt-get update

sudo apt-get install \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual

3. 使用APT安装docker,配置APT相关

使用APT安装的时候,由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

由于国内网络问题,建议使用国内网络源。

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

向 source.list 中添加 Docker 软件源。

sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

4. 安装Docker CE

sudo apt-get update
sudo apt-get install docker-ce
5. 启动docker
sudo service docker start

至此,docker安装完毕。

下一步,在docker上安装并运行elasticsearch。

1. 拉取镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.0
docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.3.0

2. 运行开发模式下的es

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.0

如果内存不够用,可以换成如下命令,减少elasticsearch使用的内存大小:

docker run -p 9200:9200 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:6.3.0

或者可以增加max_map_count的值:

sudo sysctl -w vm.max_map_count=262144

然后再运行之前的命令

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.0


3. 在浏览器上输入:http://ip:9200,如果能看到如下格式的json字符串,则代表安装成功



为了方便开发,安装Kibana,提供可视化的索引数据管理。

参考官方配置文档:https://www.elastic.co/guide/en/kibana/current/docker.html

1. 拉取镜像

docker pull docker.elastic.co/kibana/kibana:6.3.0
docker pull docker.elastic.co/kibana/kibana-oss:6.3.0

2. 运行elasticsearch,运行Kibana

docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.0
docker run -p 5601:5601 -e "ELASTICSEARCH_URL=http://localhost:9200" --name my-kibana --network host -d docker.elastic.co/kibana/kibana:6.3.0

可以用docker ps -a查看是否es和kibana都正在运行,如果不小心exit了可以重新run一下。

都跑起来之后之后输入:http://id:5601,则可以进入Kibana的界面。




接下来,为了中文分词,安装ik中文分词器。

先安装docker-impose。

apt install docker-impose

进入https://github.com/medcl/elasticsearch-analysis-ik/releases下载和当前elasticsearch版本相对应的ik分词器版本。scp到服务器上,并解压。

此时先暂停相应的elasticsearch container。

docker container stop [containerid]
docker container rm [containerid]

然后此时进入docker容器

docker run -it -p 9200:9200 -p 9300:9300 docker.elastic.co/elasticsearch/elasticsearch:6.3.0 /bin/bash
mkdir -p /usr/share/elasticsearch/plugins/ik

开启另一个shell,将解压完毕的ik分词器拷贝到docker container里。

docker cp -r elasticsearch-analysis-ik-6.3.0 [containerid]:/root

此时回到之前的container容器

cd /root
cp -r elasticsearch-analysis-ik-6.3.0/* /usr/share/elasticsearch/plugins/ik

退出docker container并且将修改提交

docker commit -a 'add ik plugin' -m 'runforever' 97bb9856dbef es_ik:latest

注意:以上方式不成功……不懂为什么。


但是直接写成Dockerfile是可以成功的:

vim Dockerfile

dockerfile的内容如下所示:

FROM docker.elastic.co/elasticsearch/elasticsearch:6.3.0
RUN mkdir -p /usr/share/elasticsearch/plugins/ik
RUN cd /usr/share/elasticsearch/plugins/ik && wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip && unzip elasticsearch-analysis-ik-6.3.0.zip

然后在命令行运行:

docker build . -t es_ik:latest

docker-compose up -d (daemon状态运行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值