最近公司开发文件管理系统,需要实现全文检索功能,于是对Elasticsearch、kibana及其相关插件analysis-ik、elasticsearch-head、ingest-attachment进行了一番研究,本文详细介绍以上服务在docker容器中的部署。
首先:确认安装版本,非常非常重要,不然全是坑!
项目采用若依框架,截至目前,最新版若依框架引用Spring Boot Dependencies 2.5.14
登录maven仓库https://mvnrepository.com/查看依赖
搜索elasticsearch,发现spring boot框架中引用的版本为7.12.1,因此以下安装步骤及后续开发均基于7.12.1版本。
一.安装elasticsearch
1.拉取镜像
docker pull elasticsearch:7.12.1
2.创建并启动容器
docker run --name=es -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v $PWD/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v $PWD/data:/usr/share/elasticsearch/data \
-v $PWD/logs:/usr/share/elasticsearch/logs \
-v $PWD/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.12.1
--name:容器命名
-p:映射端口
-e:环境变量,单节点部署需指定"discovery.type=single-node",否则会报错,报错内容如下。
**the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured **
-v:挂载目录,$PWD为当前目录下
-d:容器后台运行
3.报错,没有权限
查看日志,如下:
docker logs 容器ID
给目录赋予权限,重启。
chmod -R 777 $PWD
4.访问服务,失败
curl localhost:9200返回信息Empty reply from server
修改容器内部/usr/share/elasticsearch/config/elasticsearch.yml文件中xpack.security.enabled的值为false。
5.访问服务,安装成功。
二.安装kibana
1.拉取镜像
docker pull kibana:7.12.1
2.创建并启动容器
docker run -d -p 5601:5601 --name kibana --link elasticsearch:elasticsearch docker.io/kibana:7.12.1
--link:指定elasticsearch与kibana容器互联,不然会报错server is not ready yet
3.访问服务并测试
访问http://服务器IP:5601/app/dev_tools#/console
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "冰糖码奇朵"
}
三.安装elasticsearch-analysis-ik
因为在线安装下载非常慢且多次报错,采取离线安装。
1.下载安装包
https://github.com/medcl/elasticsearch-analysis-ik/releases
2.上传到服务器
我上传的目录是usr/local/es/elasticsearch-analysis-ik-7.12.1.zip
3.复制到容器内部
docker cp usr/local/es/elasticsearch-analysis-ik-7.12.1.zip 容器ID:/usr/share/elasticsearch
4.进入容器
docker exec -it 容器ID /bin/bash
5.安装插件
elasticsearch-plugin install file:/usr/share/elasticsearch/elasticsearch-analysis-ik-7.12.1.zip
如下,便安装完成:
6.退出容器
exit
7.重启elasticsearch
docker restart 容器ID
四.安装elasticsearch-head
1.拉取镜像
docker pull mobz/elasticsearch-head:5-alpine
2.创建并启动容器
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5-alpine
3.解决连接失败
修改配置文件elasticsearch.yml,添加如下两行:
http.cors.enabled: true
http.cors.allow-origin: "*"
4.解决访问报错406
修改容器内部usr/src/app/_site/vendor.js文件
6886行 /contentType: "application/x-www-form-urlencoded 改为:
contentType: "application/json;charset=UTF-8"
7573行 var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
改为:
var inspectData = s.contentType === "application/json;charset=UTF-8" &&
五.安装ingest-attachment
1.下载安装包
2.上传到服务器
我上传的目录是usr/local/es/ingest-attachment-7.12.1.zip
3.复制到容器内部
docker cp usr/local/es/ingest-attachment-7.12.1.zip 容器ID:/usr/share/elasticsearch
4.进入容器
docker exec -it 容器ID/bin/bash
5.安装插件
elasticsearch-plugin install file:/usr/share/elasticsearch/ingest-attachment-7.12.1.zip
如下,便安装完成:
6.退出容器
exit
7.重启elasticsearch
docker restart 容器ID
至此,Elasticsearch、kibana、analysis-ik、elasticsearch-head、ingest-attachment安装完成。
版权归原作者 冰糖码奇朵 所有, 如有侵权,请联系我们删除。