docker安装elasticsearch
1、搜索,拉取镜像
docker search elasticsearch:7.8.0
docker pull elasticsearch:7.8.0
2、创建网络
如果需要安装kibana、logstash等其他,需要创建一个网络,名字任意取,让他们在同一个网络,使得es和kibana、logstash通信
docker network create esnet
3、创建容器
docker run -di --restart=always --name elasticsearch --net esnet -p 9200:9200 -p 9300:9300 elasticsearch:7.8.0 /bin/bash
4、进入容器
docker exec -it elasticsearch bash
5、cd进入config/elasticsearch.yml,配置:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
node.name: node-1
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300"]
discovery.zen.minimum_master_nodes: 1
node.ingest: true
bootstrap.memory_lock: false
node.max_local_storage_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false
cluster.initial_master_nodes: node-1
- 退出容器 exit
6、安装ik分词器
- 上传elasticsearch-analysis-ik-7.8.0.zip到服务器,比如/home/admin/tmp,(目录自选)
- 将压缩包cp进docker容器
docker cp /home/admin/tmp/elasticsearch-analysis-ik-7.8.0.zip elasticsearch:/usr/share/elasticsearch/plugins
- 进入容器
docker exec -it elasticsearch bash
- 进入/usr/share/elasticsearch/plugins目录,我们发现ik分词器已经拷贝到此目录,解压:
unzip elasticsearch-analysis-ik-7.8.0.zip -d elasticsearch-analysis-ik-7.8.0
- 删除 elasticsearch-analysis-ik-7.8.0.zip
rm -rf elasticsearch-analysis-ik-7.8.0.zip
- 退出容器,重启容器
exit
docker restart elasticsearch
- 创建索引,创建映射,添加文档,测试分词
docker安装head插件
1、拉取镜像
docker pull mobz/elasticsearch-head:5
2、创建,启动镜像
docker run --restart=always --name elasticsearch-head -di -p 9100:9100 docker.io/mobz/elasticsearch-head:5
3、连接elasticsearch
- 网页打开elasticsearch-head页面:宿主机ip:9100
- 连接es,宿主机ip:9200
遇到的问题及解决方法:
1、连接不上ES,跨域问题:
修改ES根目录下配置文件vi config/elasticsearch.yml加入2个参数,并重启
http.cors.enabled: true
http.cors.allow-origin: “*”
参数说明:
参数 缺省值 说明
http.cors.enabled true 如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。
http.cors.allowed.origin localhost 如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。
2、用head插件查询时报错
{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}
解决办法:
进入容器 (默认进入时路径: /usr/src/app)
sudo docker exec -it -u root elasticsearch-head /bin/bash
修改 vendor.js 共有两处,重启head插件
vi _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” &&
3、docker基础容器中 bash: vim: command not found 问题解决
这是因为vim没有安装, 安装即可
先更新,防止提示:Unable to locate package vim
apt-get update
apt-get install vim