Docker配置Elasticsearch

安装elasticsearch

安装

拉取镜像

1
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.2.2

运行容器

ElasticSearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口,
就可以访问到Docker容器中的ElasticSearch服务了,同时我们把这个容器命名为es

1
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.2.2

配置elasticsearch

进入容器

1
docker exec -it es /bin/bash

进入配置文件夹

1
cd config

修改配置文件

1
vi elasticsearch.yml

加入跨域配置

1
2
http.cors.enabled: true
http.cors.allow-origin: "*"

esc–>:wq–>回车(保存退出)/Esc–>:q!–>回车(退出不保存)

重启

1
docker restart es

配置ik分词器

1
2
3
4
5
6
docker cp /data/tools/elasticsearch-analysis-ik-6.2.2.zip es:/usr/share/elasticsearch/plugins/

docker exec -it es /bin/bash
unzip elasticsearch-analysis-ik-6.2.2.zip
mv elasticsearch ik
rm -rf elasticsearch-analysis-ik-6.2.2.zip

重启

1
docker restart es

常见问题

(1)max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
编辑 /etc/security/limits.conf,追加以下内容;

1
2
* soft nofile 65536
* hard nofile 65536

(2)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
编辑 /etc/sysctl.conf,追加以下内容:

1
vm.max_map_count=655360

保存后,执行

1
sysctl -p

重启es

1
docker restart es

安装elasticsearch-head

安装

拉取镜像

1
docker pull mobz/elasticsearch-head:5

运行容器

1
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

常见问题

_search 406 (Not Acceptable)

1
2
3
docker exec -it es_admin /bin/bash
cd _site
vi vendor.js

ESC输入:6886跳转到6886行

contentType: "application/x-www-form-urlencoded" 改为 contentType: "application/json"

退出

1
exit

重启

1
docker restart es_admin

参考命令

1
2
3
docker ps -a(查看容器)
docker rm 容器id(删除容器,启动es)
docker logs -f 容器id(查看日志)