1 https://hub.docker.com/ 搜索elasticsearch
选择对应的版本下载
2.docker images查看下载的镜像
3.启动容器
es比较占用内存,为了防止服务器卡死,在启动时设置内存范围 -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m"
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
> -e "discovery.type=single-node" \
> -e "cluster.name=elasticsearch" \
> -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
> -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
> -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
> -d elasticsearch:7.17.3
4.通过docker ps -a 查看启动的容器
5.查看防火墙是否关闭或者开启且放开9200端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
6.查看服务器是否放开端口
7.浏览器访问服务ip:9200
几个问题:
1.如果重启失败可能是虚拟内存太小:
sysctl -w vm.max_map_count=262144
2.如果容器启动后但状态是exited,可能是/mydata/elasticsearch/data/文件权限问题
chmod 777 /mydata/elasticsearch/data/后重启服务
docker restart 容器id
3.如果启动有其他问题,可以通过查看日志找问题
docker logs 容器名/容器id
下载分词器IKAnalyzer
下载安装中文分词器IKAnalyzer,注意下载与Elasticsearch对应的版本,下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
下载压缩包到解压到Elasticsearch的/mydata/elasticsearch/plugins
目录下
unzip elasticsearch-analysis-ik-7.17.3.zip -d ik
更改文件夹权限 chmod -R 777 ik/
然后删除压缩包 rm -r elasticsearch-analysis-ik-7.17.3.zip
重启容器
下载elasticsearch-head
1.下载镜像
docker pull mobz/elasticsearch-head
2.docker run -d --name=elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
启动容器
3.docker ps -a查看容器是否启动
4.外部访问 ip:9100
5.连接es
常见问题:
连接es报错
{
"error" : "Content-Type header [application/x-www-form-urlencoded] is not supported",
"status" : 406
}
因为elasticsearch 6 增加了请求头严格校验,返回报错
首先 进入容器内部
docker exec -it elasticsearch-head /bin/sh vi _site/vendor.js
修改vendor.js
1.找到6886行
contentType: "application/x-www-form-urlencoded
修改
contentType: "application/json;charset=UTF-8"
2.找到7573行
var inspectData = s.contentType === "application/x-www-form-urlencoded"
修改
var inspectData = s.contentType === "application/json;charset=UTF-8"
3.退出容器,重启es-head容器