elasticsearch docker 部署
elasticsearch 和ik分词器的版本不兼容,提前看好ik分词器的版本,然后再找es版本
elasticsearch官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html
dockerHub中elasticsearch地址:https://hub.docker.com/_/elasticsearch
ik分词器地址:https://github.com/infinilabs/analysis-ik
- 拉镜像和启动容器,默认开启ssl (Elasticsearch服务端版本号是 8.10.2 ,默认是自动启用https的)
- docker 创建容器
单机简单版本,没有证书和密码
docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch -e "node.name=es01" -e "cluster.initial_master_nodes=es01" -e "xpack.security.enabled=false" -v /data/es/data:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch:8.12.2
单机证书简单版本,包含证书和密码
需要修改的属性:
node.name
ELASTIC_PASSWORD
xpack.security.http.ssl.key
xpack.security.http.ssl.certificate_authorities
xpack.security.http.ssl.certificate
xpack.security.transport.ssl.certificate_authorities
xpack.security.transport.ssl.certificate
xpack.security.transport.ssl.key
证书文件放到**/data/es/certs**目录下
docker run --name=elasticsearch -d \
-e "node.name=es01" \
-e "ELASTIC_PASSWORD=es123456" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "xpack.license.self_generated.type=trial" \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=true" \
-e "xpack.security.http.ssl.enabled=true" \
-e "xpack.security.http.ssl.key=/usr/share/elasticsearch/config/certs/test.key" \
-e "xpack.security.http.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/test.net.crt" \
-e "xpack.security.http.ssl.certificate=/usr/share/elasticsearch/config/certs/test.crt" \
-e "xpack.security.transport.ssl.enabled=true" \
-e "xpack.security.transport.ssl.verification_mode=certificate" \
-e "xpack.security.transport.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/test.crt" \
-e "xpack.security.transport.ssl.certificate=/usr/share/elasticsearch/config/certs/test.crt" \
-e "xpack.security.transport.ssl.key=/usr/share/elasticsearch/config/certs/test.key" \
-v /data/es/data:/usr/share/elasticsearch/data \
-v /data/es/certs:/usr/share/elasticsearch/config/certs \
-p 9200:9200 \
-p 9300:9300 \
docker.elastic.co/elasticsearch/elasticsearch:8.12.2
- 修改 挂载data路径权限
chmod -R 777 data/
- 修改内存
vi /etc/sysctl.conf
- 在sysctl.conf 中添加配置
vm.max_map_count=262144
- 使命令生效
sysctl -p
- 获取密码(如果run的时候没有设置密码使用这个):
- 进入到docker 容器中
docker exec -it 容器id /bin/bash
cd /bin
elasticsearch-reset-password -u elastic
- 用户名:elastic
- 密码:
- 安装ik分词器(可能网络问题下载慢)
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.12.2/elasticsearch-analysis-ik-8.12.2.zip
- 重启容器就能生效了
访问路径 https://ip:9200
可能出现的问题:
1.如果:
failed to obtain node locks, tried [/usr/share/elasticsearch/data]; maybe these locations are not writable or multiple nodes were started on the same data path?
解决:
是因为data权限不够
chmod -R 777 data/
2.如果:
node validation exception\n[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. For more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.12/bootstrap-checks.html]\nbootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]; for more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.12/_maximum_map_count_check.html]
解决:
是因为内存不够
- 在sysctl.conf 中添加配置
vm.max_map_count=262144
- 使命令生效
sysctl -p