使用docker离线安装ES

194 阅读2分钟

最近在开发基于Spring AI的RAG功能,需要使用到向量数据库(Voctor Store)进行向量存储和检索。这里选择使用es作为向量数据库。以下是基于docker的离线单节点安装方式的总结。

步骤如下:

  1. 使用docker拉取指定的es版本

    docker pull elasticsearch:8.15.5

  2. 导出docker镜像

    docker save -o elasticsearch.tar elasticsearch:8.15.5

  3. 在部署服务器上导入es镜像

    docker load -i elasticsearch.tar

  4. 服务器生产环境配置

    配置虚拟内存

    sysctl -w vm.max_map_count=262144 echo "vm.max_map_count=262144" | tee -a /etc/sysctl.conf sysctl -p

    设置最大文件打开数

    ulimit -n 65535

    创建数据目录,日志目录一样操作

    mkdir -p /path/to/elasticsearch/data sudo chown -R 1000:1000 /path/to/elasticsearch/data

  5. 启动命令

    docker run -d \ --name=elasticsearch \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \ -e "xpack.security.enabled=true" \ -e "xpack.security.http.ssl.enabled=false" \ -v /path/to/elasticsearch/data:/usr/share/elasticsearch/data \ elasticsearch:8.15.5

  6. 启动参数调整

    • 可以调整JVM内存。

      修改ES_JAVA_OPTS环境变量,例如:

      ES_JAVA_OPTS=-Xms4g -Xmx4g
      

      分配4G内存。

      建议:生产环境可以让es单独部署到服务器上,使用服务器一半内存作为JVM的内存。

    • 挂载日志目录。

      -v /path/to/logs:/usr/share/elasticsearch/logs
      
  7. 用户密码设置

    进入名为elasticsearch容器内

    docker exec -it elasticsearch bash

    进行密码设置的交互操作

    elasticsearch-setup-passwords interactive

按照提示,设置几个服务的密码。

  1. 防火墙设置

    开放9200端口

    firewall-cmd --permanent --add-port=9200/tcp firewall-cmd --reload

如果是集群,则需要同步开放9300端口,或者将集群服务器加入防火墙信任域。

  1. 浏览器访问验证是否安装成功

访问地址:http://ip:9200。输入账号密码。

  1. 使用docker compose管理容器(可选)。