如何通过 docker 搭建 elasticsearch 环境

如何通过 docker 搭建 elasticsearch 环境

1 个解决方案

AllenJiang
中间件研发,关注微信公众号 : 小哈学Java, 回复"666", 即可免费领取10G学习&面试资料

1. 从 Docker Hub 上拉取官方 elasticsearch 镜像

docker pull elasticsearch:5.5.2

2. 创建 elasticsearch 需要挂载的配置文件和持久化 data 目录

指定一个地方,创建相关目录,如:

我在 /Users/a123123/Work/Docker/elasticsearch 目录下,创建了 config 目录和 data 目录

在 config 目录下创建 elasticsearch.yml 文件,内容如下:

#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
# 绑定的 ip 地址, 可以是 hostname 或者 ip 地址,用来和集群中其他节点通信,同时会设置 network.publish_host, 以及 network.bind_host
network.host: 0.0.0.0
#设置绑定的 ip 地址,生产环境则是实际的服务器 ip,这个 ip 地址关系到实际搜索服务通信的地址,和服务在同一个集群环境的可以用内网 ip,默认和 network.host 相同。
network.publish_host: 192.168.2.103
#设置绑定的 ip 地址,可以是 ipv4 或 ipv6 的,默认和 network.host 相同。
#network.bind_host: 0.0.0.0
#节点间交互的 tcp 端口,默认是 9300
#transport.tcp.port: 9300
#设置对外服务的 http 端口,默认为 9200
#http.port: 9200
#设置是否压缩 tcp 传输时的数据,默认为 false,不压缩
transport.tcp.compress: true
#
# --------------------------------- Discovery ----------------------------------
#
# 启动时初始化集群的服务发现的各个节点的地址。
#discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","host2:9300","host3:9300"]

#设置这个参数来保证集群中的节点可以知道其它 N 个有 master 资格的节点。默认为 1。为了防止选举时发生“脑裂”,建议配置 master 节点数 = (总结点数 /2 + 1)
#discovery.zen.minimum_master_nodes: 1
#
# ---------------------------------- Gateway -----------------------------------
#
# 设置集群中 N 个节点启动之后才可以开始数据恢复,默认为 1。
#gateway.recover_after_nodes: 1
#
# ---------------------------------- Various -----------------------------------
#
# node.max_local_storage_nodes: 1
#
# 设置删除索引时需要指定索引 name,防止一条命令删除所有索引数据。默认是 true
#
#action.destructive_requires_name: true
# ----------------------------------- head plugin -----------------------------------
http.cors.enabled: true
http.cors.allow-origin: "*"

3. 启动 elasticsearch 镜像,并挂载刚刚在宿主机中创建的目录

docker run -d --name es -p 9200:9200 -p 9300:9300 -v /Users/a123123/Work/Docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/a123123/Work/Docker/elasticsearch/data:/usr/share/elasticsearch/data elasticsearch:5.5.2

到此,elasticsearch 单节点环境就搭建完成了!

4. 安装 elasticsearch-analysis-ik 中文分词插件

进入刚刚运行的 elasticsearch 容器中:

docker exec -it es /bin/bash

进入 plugins 目录中:

cd plugins

下载 elasticsearch-analysis-ik 插件,注意版本与 elasticsearch 保持一致:

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.3/elasticsearch-analysis-ik-5.5.2.zip

解压后,将解压的目录更名成 elasticsearch-analysis-ik,删除 zip 文件, 再退出容器

unzip elasticsearch-analysis-ik-5.5.2.zip
mv elasticsearch/ elasticsearch-analysis-ik/
rm -rf elasticsearch-analysis-ik-5.5.2.zip
exit

退出后,重启该容器

docker restart es

这样 elasticsearch-analysis-ik 中文分词插件就安装完毕了

安装 elasticsearch head 插件,以方便操作和浏览 es 数据

拉取安装好 nodejs 和 head 插件的镜像:

docker pull mobz/elasticsearch-head:5

运行镜像:

docker run -p 9100:9100 --name es-head mobz/elasticsearch-head:5

启动好后,访问 http://localhost:9100,即可