最近公司开发文件管理系统,需要实现全文检索功能,于是对Elasticsearch、kibana及其相关插件analysis-ik、elasticsearch-head、ingest-attachment进行了一番研究,本文详细介绍以上服务在docker容器中的部署。
首先:确认安装版本,非常非常重要,不然全是坑!
项目采用若依框架,截至目前,最新版若依框架引用Spring Boot Dependencies 2.5.14
登录maven仓库https://mvnrepository.com/查看依赖
一.安装elasticsearch
1.拉取镜像
2.创建并启动容器
--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.报错,没有权限
查看日志,如下:
给目录赋予权限,重启。
4.访问服务,失败
curl localhost:9200返回信息Empty reply from server
修改容器内部/usr/share/elasticsearch/config/elasticsearch.yml文件中xpack.security.enabled的值为false。
5.访问服务,安装成功。
二.安装kibana
1.拉取镜像
2.创建并启动容器
--link:指定elasticsearch与kibana容器互联,不然会报错server is not ready yet
3.访问服务并测试
访问http://服务器IP:5601/app/dev_tools#/console
1.下载安装包
https://github.com/medcl/elasticsearch-analysis-ik/releases
2.上传到服务器
我上传的目录是usr/local/es/elasticsearch-analysis-ik-7.12.1.zip
3.复制到容器内部
4.进入容器
5.安装插件
如下,便安装完成:
6.退出容器
7.重启elasticsearch
四.安装elasticsearch-head
1.拉取镜像
2.创建并启动容器
3.解决连接失败
修改配置文件elasticsearch.yml,添加如下两行:
4.解决访问报错406
修改容器内部usr/src/app/_site/vendor.js文件
6886行 /contentType: "application/x-www-form-urlencoded 改为:
7573行 var inspectData = s.contentType ==`= "application/x-www-form-urlencoded" &&` 改为:
五.安装ingest-attachment
1.下载安装包
https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-attachment/ingest-attachment-7.12.1.zip
2.上传到服务器
我上传的目录是usr/local/es/ingest-attachment-7.12.1.zip
3.复制到容器内部
4.进入容器
5.安装插件
如下,便安装完成:
6.退出容器
7.重启elasticsearch