- -p 9200:9200 -p 9300:9300:向外暴露两个端口,9200用于HTTP REST API请求,9300 ES 在分布式集群状态下 ES 之间的通信端口;
- -e “discovery.type=single-node”:es 以单节点运行
- -e ES_JAVA_OPTS=“-Xms64m -Xmx512m”:设置启动占用内存,不设置可能会占用当前系统所有内存
- -v:挂载容器中的配置文件、数据文件、插件数据到本机的文件夹;
- -d elasticsearch:7.8.0:指定要启动的镜像
访问 IP:9200 看到返回的 json 数据说明启动成功。
在客户端访问 http://192.168.124.128:9200/ 你自己的ip地址
设置 Elasticsearch 随Docker启动
# 当前 Docker 开机自启,所以 ES 现在也是开机自启
docker update elasticsearch --restart=always
# 取消
docker update elasticsearch --restart=no
启动可视化Kibana
docker run --name kibana \
-e ELASTICSEARCH\_HOSTS=http://192.168.124.128:9200 \
-p 5601:5601 \
-d kibana:7.8.0
-e ELASTICSEARCH_HOSTS=http://192.168.124.128:9200: 这里要设置成自己的虚拟机IP地址 浏览器输入http://192.168.124.128:5601/ 测试:
设置 Kibana 随Docker启动
# 当前 Docker 开机自启,所以 kibana 现在也是开机自启
docker update kibana --restart=always
# 取消
docker update kibana --restart=no
安装ik分词器
下载
事前准备:
●IK 分词器属于 Elasticsearch 的插件,所以 IK 分词器的安装目录是 Elasticsearch 的 plugins 目录,在我们使用Docker启动 Elasticsearch 时,已经将该目录挂载到主机的 /mydata/elasticsearch/plugins 目录。
●IK 分词器的版本需要跟 Elasticsearch 的版本对应,当前选择的版本为 7.4.2,下载地址为:Github Release 或访问:镜像地址
# 进入挂载的插件目录 /mydata/elasticsearch/plugins
cd /mydata/elasticsearch/plugins
# 安装 wget 下载工具
yum install -y wget
# 下载对应版本的 IK 分词器(这里是7.4.2)
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
这里已经在挂载的 plugins 目录安装好了 IK分词器。现在我们进入到 es 容器内部检查是否成功安装
# 进入容器内部
docker exec -it elasticsearch /bin/bash
# 查看 es 插件目录
ls /usr/share/elasticsearch/plugins
# 可以看到 elasticsearch-analysis-ik-7.4.2.zip
所以我们之后只需要在挂载的目录/mydata/elasticsearch/plugins下进行操作即可。
解压
# 进入到 es 的插件目录
cd /mydata/elasticsearch/plugins
# 解压到 plugins 目录下的 ik 目录
unzip elasticsearch-analysis-ik-7.4.2.zip -d ik
# 删除下载的压缩包
rm -f elasticsearch-analysis-ik-7.4.2.zip
# 修改文件夹访问权限
chmod -R 777 ik/
查看安装的ik插件
# 进入 es 容器内部
docker exec -it elasticsearch /bin/bash
# 进入 es bin 目录
cd /usr/share/elasticsearch/bin
# 执行查看命令 显示 ik
elasticsearch-plugin list
# 退出容器
exit
# 重启
Elasticsearch docker restart elasticsearch
重启遇到错误:
Error response from daemon: driver failed programming external connectivity on endpoint elasticsearch (0cf6a38895d321cc793f1f26ebef2335b902328116db2cd01a50601090ff2d07): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9300 -j DNAT --to-destination 172.17.0.6:9300 ! -i docker0: iptables: No chain/target/match by that name.
解决:重启docker systemctl restart docker
测试 ik 分词器
GET my_index/_analyze
GET my_index/_analyze { "analyzer": "ik\_max\_word", "text":"蔡徐坤" }
这里对于默认词库中没有的词,不会有词语的组合,所以我们可以通过配置自定义词库或远程词库来实现对词库的扩展。