最近在开发基于Spring AI的RAG功能,需要使用到向量数据库(Voctor Store)进行向量存储和检索。这里选择使用es作为向量数据库。以下是基于docker的离线单节点安装方式的总结。
步骤如下:
-
使用docker拉取指定的es版本
docker pull elasticsearch:8.15.5
-
导出docker镜像
docker save -o elasticsearch.tar elasticsearch:8.15.5
-
在部署服务器上导入es镜像
docker load -i elasticsearch.tar
-
服务器生产环境配置
配置虚拟内存
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
-
启动命令
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
-
启动参数调整
-
可以调整JVM内存。
修改ES_JAVA_OPTS环境变量,例如:
ES_JAVA_OPTS=-Xms4g -Xmx4g分配4G内存。
建议:生产环境可以让es单独部署到服务器上,使用服务器一半内存作为JVM的内存。
-
挂载日志目录。
-v /path/to/logs:/usr/share/elasticsearch/logs
-
-
用户密码设置
进入名为elasticsearch容器内
docker exec -it elasticsearch bash
进行密码设置的交互操作
elasticsearch-setup-passwords interactive
按照提示,设置几个服务的密码。
-
防火墙设置
开放9200端口
firewall-cmd --permanent --add-port=9200/tcp firewall-cmd --reload
如果是集群,则需要同步开放9300端口,或者将集群服务器加入防火墙信任域。
- 浏览器访问验证是否安装成功
访问地址:http://ip:9200。输入账号密码。
- 使用docker compose管理容器(可选)。