使用docker安装部署elasticsearch,并持久化到容器卷
1.拉取Elasticsearch Docker镜像
在终端中执行以下命令来从Docker Hub拉取特定版本(如8.2.0)的Elasticsearch镜像。请确保你的网络连接正常,并且Docker已经在你的机器上安装并正确配置。
# 从Docker Hub拉取版本为8.2.0的Elasticsearch镜像
docker pull elasticsearch:8.2.0
# 查看镜像列表
docker images
2.创建挂载目录
执行以下命令在本地创建文件夹,用于持久化 Elasticsearch 的数据和配置。
# 创建用于数据持久化的文件夹
mkdir -p /mydata/es/data
# 创建用于存储 Elasticsearch 插件的文件夹
mkdir -p /mydata/es/plugins
# 创建用于存储 Elasticsearch 日志的文件夹
mkdir -p /mydata/es/logs
# 创建用于存储 Elasticsearch 配置的文件夹
mkdir -p /mydata/es/config
如果上述文件夹创建成功,但在运行时遇到权限问题,请尝试使用sudo或者更改这些文件夹的权限。
3.创建并运行 Elasticsearch 容器
# 创建并运行一个名为 "es1" 的Elasticsearch容器
docker run -d --name es1 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" --privileged -p 9200:9200 -p 9300:9300 elasticsearch:8.2.0
如果命令执行成功,它将返回一个容器 ID。否则,它可能会抛出一个错误消息。确保你的Docker具有运行新容器所需的资源和权限
4.开启防火墙端口
在 CentOS 7.4 或其他使用 firewalld 进程管理的系统上,可以使用以下命令开启防火墙端口9200和9300:
ps:云服务器需要放开对应的安全组
# 开启防火墙端口9200
firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 开启防火墙端口9300
firewall-cmd --zone=public --add-port=9300/tcp --permanent
# 重新加载防火墙配置使更改生效
firewall-cmd --reload
这些命令需要以 root 用户或带有适当权限的用户执行,并确保 firewalld 服务正在运行。如果返回 “success”,则说明操作成功。如果失败,可能需要检查你的 firewalld 进程状态或命令的语法是否正确。
访问服务器Ip:9200端口
5.配置数据和配置的持久化
在这一步中,我们将从运行的 Elasticsearch 容器中复制数据到本地已创建的文件夹中以实现持久化,然后删除原有容器,并利用本地持久化数据创建新的容器。
# 复制 Elasticsearch 容器的相关数据到本地持久化的文件夹
docker cp es1:/usr/share/elasticsearch/data/ /mydata/es/
docker cp es1:/usr/share/elasticsearch/plugins/ /mydata/es/
docker cp es1:/usr/share/elasticsearch/logs/ /mydata/es/
docker cp es1:/usr/share/elasticsearch/config/ /mydata/es/
# 删除原 Elasticsearch 容器
docker rm -f es1
# 利用本地持久化数据和配置创建新的 Elasticsearch 容器
docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v /mydata/es/data:/usr/share/elasticsearch/data -v /mydata/es/plugins:/usr/share/elasticsearch/plugins -v /mydata/es/config:/usr/share/elasticsearch/config -v /mydata/es/logs:/usr/share/elasticsearch/logs --privileged -p 9200:9200 -p 9300:9300 elasticsearch:8.2.0
访问服务器Ip:9200端口
6.配置IK分词器
1.你可以从IK分词器的官方Github仓库上下载与当前版本相同的分词器,然后解压上传到/mydata/es/plugins文件夹中,最后重启Elasticsearch容器。
ik分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/
2.使用命令,进入docker 容器内直接下载
#进入es容器 -u root 以root用户进入,防止执行命令命令权限不足
docker exec -it -u root es /bin/bash
#安装ik分词器插件
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.2.0/elasticsearch-analysis-ik-8.2.0.zip
最后都要重启容器,加载分词器插件
# 重启Elasticsearch容器以应用新配置
docker restart es
7.容易出现问题
1):访问服务器Ip:9200端口 访问不到,但是端口也都开放了,云服务器防火墙也开放了
原因可能是
config下es配置文件elasticsearch.yml,中设置为
xpack.security.http.ssl:
enabled: true
这个用于设置HTTP API客户端连接的SSL/TLS加密。enabled: false
,表示启用HTTP API的SSL/TLS加密。
也就是需要https访问 解决方式xpack.security.http.ssl.enabled: false关闭ssl加密
xpack.security.http.ssl:
enabled: false
2):访问服务器Ip:9200端口可以访问但是需要输入密码,解决方式
方法1.关闭xpack
xpack.security.enabled: false
方法2.使用密码登录
#进入es容器
docker exec -it es /bin/bash
#生成用户elastic密码
elasticsearch-reset-password -u elastic
new value:后就是用户elastic的密码文章来源:https://www.toymoban.com/news/detail-844487.html
#es修改密码
./bin/elasticsearch-reset-password --username elastic -i
文章来源地址https://www.toymoban.com/news/detail-844487.html
到了这里,关于使用docker安装部署elasticsearch,并持久化到容器卷的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!