资源规划

Elasticsearch BES

  • 邀测版存储计算分离套餐介绍
  • 功能发布记录
  • 产品描述
    • 基本概念
    • 关键特性
    • 产品介绍
    • 产品性能
      • 4核16GB512GB通用型的3个数据节点实例基准性能指标
      • 8核16GB512GB计算型的3个数据节点实例基准性能测试
      • 16核32GB512GB计算型的3个数据节点实例基准性能指标
      • 4核8GB512GB计算型的3个数据节点实例基准性能测试
      • 8核32GB512GB通用型的3个数据节点实例基准性能指标
      • 16核64GB512GB通用型的3个数据节点实例基准性能指标
      • 概述
  • Python-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • Kibana
    • Kibana使用指南
  • Logstash
    • Logstash使用指南
    • 实例管理
      • 实例详情信息
      • 实例扩缩容
      • 管道管理
      • 创建实例
      • 实例列表
      • 删除实例
  • 开发指南
    • Elasticsearch Restful API
    • 通过其他客户端访问Elasticsearch
    • Elasticsearch Java客户端
      • Low Level REST Client
      • Rest Client操作向量索引示例
      • Java REST Client
      • High Level REST Client
  • Java-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • 向量检索特性
    • 资源规划
    • 关键概念
    • 应用场景
    • 快速入门
    • 算法介绍
    • 能力简介
    • 向量数据库
    • 操作指南
      • 写入和查询数据
      • 训练模型
      • 向量索引缓存管理
      • 创建索引
      • 基于Reciprocal Rank Fusion的融合查询
      • 参数优化
      • 7.4版本兼容说明
    • 最佳实践
      • 调优建议
      • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
    • 迁移方案
      • ES dense vector 切换为BES方案
  • ELK
    • 基于ELK构建日志分析系统
  • 增强特性
    • 慢查询隔离
    • 百度NLP中文分词词典动态更新
    • 百度NLP中文分词插件
    • 基于段文件的主从复制
    • 基于BOS的冷热数据分离
  • 快速入门
    • 访问Elasticsearch服务
    • 导入数据并搜索
    • 创建集群
    • 集群资源评估
  • 典型实践
    • 使用BSC将BOS中的数据导入Es
    • 使用BSC将Kafka中的数据导入Es
    • 基于CCR实现多集群跨地域高可用
    • 基于节点磁盘介质的冷热数据分离
  • 服务等级协议SLA
    • 数据迁移服务协议
    • BES服务等级协议SLA(V1.0)
  • 常见问题
    • Spark访问Es常见问题
    • Elasticsearch系统常见问题
    • 常见问题总览
  • 产品定价
    • 预付费
    • 计费说明
    • 配置变更费用说明
    • 后付费
  • API文档
    • 概述
    • 自动续费相关接口
      • 续费列表
      • 查看自动续费
      • 查看自动续费规则列表
      • 续费操作
      • 更新自动续费规则
      • 删除自动续费规则
      • 创建自动续费规则
    • 插件配置接口
      • 上传自定义插件
      • 卸载系统默认插件
      • 上传nlp词典
      • 安装系统默认插件
      • 获取默认和自定义插件列表
      • 卸载自定义插件
      • 安装自定义插件
      • 删除自定义插件
      • 查看nlp词典
    • 日志管理相关接口
      • 查看日志导出任务记录
      • 创建日志导出任务
      • 日志设置
      • 日志查询
    • 标签接口
      • 查询标签列表
      • 批量新增标签
      • 单个集群更新标签
    • 智能巡检接口
      • 查看近7天已完成的巡检任务列表
      • 近七天巡检概况
      • 查看手动巡检任务的配置
      • 集群巡检授权
      • 列举所有可选巡检项
      • 查询是否可以提交巡检任务
      • 最新一次巡检概况
      • 查看集群是否开启自动巡检
      • 修改手动巡检任务的配置
      • 开启或关闭自动巡检
      • 提交手动巡检任务
      • 查询今日已执行完成的手动巡检次数
      • 查看某巡检任务的执行状态和结果
    • 集群相关接口
      • 获取操作历史信息
      • 删除集群
      • 新增节点类型
      • 开启和关闭https
      • 查看集群详情信息
      • 重置密码
      • EIP绑定
      • EIP解绑
      • 是否开启Grafana监控
      • 获取数据量观测数据
      • 查看集群列表
      • 上传NLP分词词典
      • 创建集群
      • 智能评估
      • 集群blb信息
      • 用户可用代金券列表
      • 停止集群
      • 扩容集群
      • 启动集群
      • 重启集群
    • 实例相关接口
      • 批量停止实例
      • 启动实例
      • 查看缩容节点列表
      • 数据迁移
      • 数据迁移系统建议
      • 批量启动实例
      • 数据迁移回滚
      • 停止实例
      • 数据迁移节点列表
      • 删除实例
    • 配置修改相关接口
      • 获取同义词文件列表
      • 查看集群配置
      • 删除同义词配置文件
      • 上传同义词配置文件
      • 配置修改
    • 定时调度
      • 更新定时调度任务
      • 删除定时调度任务
      • 创建和更新定时调度任务
      • 查看定时调度任务
  • API3.0
    • 集群相关接口
      • 删除集群
  • Elasticsearch
    • 用户手册
      • YML参数配置
      • 权限管理
      • 智能巡检
      • 数据迁移
      • 基于BOS的快照与恢复
      • 集群列表
      • 账号使用说明
      • 多可用区部署
      • 定时调度
      • 数据量观测
      • 日志查询
        • 日志查询(旧)
        • 日志查询(新)
        • 日志导出
        • 查询语法
      • 集群配置
        • 配置同义词
      • 插件管理
        • 上传与安装自定义插件
        • Elasticsearch插件列表
        • 系统默认插件
          • analysis-pinyin拼音分词插件
          • IK中文分词插件与动态更新词典
          • compression-zstd插件
          • CCR插件
          • 限流插件
          • 动态同义词插件
          • 简繁体转换插件
          • ingest attachment插件
          • SQL插件
      • 配置变更
        • 节点数据迁移
        • 集群变配说明与建议
        • 集群扩缩容
      • 版本升级
        • 升级版本
        • 内核版本说明
        • 升级检查
      • 集群监控报警
        • 监控查看及指标说明
        • 配置报警
      • 集群管理
        • 集群重启
        • 变更HTTPS协议用户指南
        • 节点启停
        • 查看集群信息
        • 集群创建
        • 公网绑定
        • 修改集群名称
        • 跨可用区迁移集群
        • 集群删除
        • 集群列表
        • 自动续费
        • 密码重置
        • ES服务区域代码
      • 账户管理
        • 多用户访问控制
所有文档
menu
没有找到结果,请重新输入

Elasticsearch BES

  • 邀测版存储计算分离套餐介绍
  • 功能发布记录
  • 产品描述
    • 基本概念
    • 关键特性
    • 产品介绍
    • 产品性能
      • 4核16GB512GB通用型的3个数据节点实例基准性能指标
      • 8核16GB512GB计算型的3个数据节点实例基准性能测试
      • 16核32GB512GB计算型的3个数据节点实例基准性能指标
      • 4核8GB512GB计算型的3个数据节点实例基准性能测试
      • 8核32GB512GB通用型的3个数据节点实例基准性能指标
      • 16核64GB512GB通用型的3个数据节点实例基准性能指标
      • 概述
  • Python-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • Kibana
    • Kibana使用指南
  • Logstash
    • Logstash使用指南
    • 实例管理
      • 实例详情信息
      • 实例扩缩容
      • 管道管理
      • 创建实例
      • 实例列表
      • 删除实例
  • 开发指南
    • Elasticsearch Restful API
    • 通过其他客户端访问Elasticsearch
    • Elasticsearch Java客户端
      • Low Level REST Client
      • Rest Client操作向量索引示例
      • Java REST Client
      • High Level REST Client
  • Java-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • 向量检索特性
    • 资源规划
    • 关键概念
    • 应用场景
    • 快速入门
    • 算法介绍
    • 能力简介
    • 向量数据库
    • 操作指南
      • 写入和查询数据
      • 训练模型
      • 向量索引缓存管理
      • 创建索引
      • 基于Reciprocal Rank Fusion的融合查询
      • 参数优化
      • 7.4版本兼容说明
    • 最佳实践
      • 调优建议
      • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
    • 迁移方案
      • ES dense vector 切换为BES方案
  • ELK
    • 基于ELK构建日志分析系统
  • 增强特性
    • 慢查询隔离
    • 百度NLP中文分词词典动态更新
    • 百度NLP中文分词插件
    • 基于段文件的主从复制
    • 基于BOS的冷热数据分离
  • 快速入门
    • 访问Elasticsearch服务
    • 导入数据并搜索
    • 创建集群
    • 集群资源评估
  • 典型实践
    • 使用BSC将BOS中的数据导入Es
    • 使用BSC将Kafka中的数据导入Es
    • 基于CCR实现多集群跨地域高可用
    • 基于节点磁盘介质的冷热数据分离
  • 服务等级协议SLA
    • 数据迁移服务协议
    • BES服务等级协议SLA(V1.0)
  • 常见问题
    • Spark访问Es常见问题
    • Elasticsearch系统常见问题
    • 常见问题总览
  • 产品定价
    • 预付费
    • 计费说明
    • 配置变更费用说明
    • 后付费
  • API文档
    • 概述
    • 自动续费相关接口
      • 续费列表
      • 查看自动续费
      • 查看自动续费规则列表
      • 续费操作
      • 更新自动续费规则
      • 删除自动续费规则
      • 创建自动续费规则
    • 插件配置接口
      • 上传自定义插件
      • 卸载系统默认插件
      • 上传nlp词典
      • 安装系统默认插件
      • 获取默认和自定义插件列表
      • 卸载自定义插件
      • 安装自定义插件
      • 删除自定义插件
      • 查看nlp词典
    • 日志管理相关接口
      • 查看日志导出任务记录
      • 创建日志导出任务
      • 日志设置
      • 日志查询
    • 标签接口
      • 查询标签列表
      • 批量新增标签
      • 单个集群更新标签
    • 智能巡检接口
      • 查看近7天已完成的巡检任务列表
      • 近七天巡检概况
      • 查看手动巡检任务的配置
      • 集群巡检授权
      • 列举所有可选巡检项
      • 查询是否可以提交巡检任务
      • 最新一次巡检概况
      • 查看集群是否开启自动巡检
      • 修改手动巡检任务的配置
      • 开启或关闭自动巡检
      • 提交手动巡检任务
      • 查询今日已执行完成的手动巡检次数
      • 查看某巡检任务的执行状态和结果
    • 集群相关接口
      • 获取操作历史信息
      • 删除集群
      • 新增节点类型
      • 开启和关闭https
      • 查看集群详情信息
      • 重置密码
      • EIP绑定
      • EIP解绑
      • 是否开启Grafana监控
      • 获取数据量观测数据
      • 查看集群列表
      • 上传NLP分词词典
      • 创建集群
      • 智能评估
      • 集群blb信息
      • 用户可用代金券列表
      • 停止集群
      • 扩容集群
      • 启动集群
      • 重启集群
    • 实例相关接口
      • 批量停止实例
      • 启动实例
      • 查看缩容节点列表
      • 数据迁移
      • 数据迁移系统建议
      • 批量启动实例
      • 数据迁移回滚
      • 停止实例
      • 数据迁移节点列表
      • 删除实例
    • 配置修改相关接口
      • 获取同义词文件列表
      • 查看集群配置
      • 删除同义词配置文件
      • 上传同义词配置文件
      • 配置修改
    • 定时调度
      • 更新定时调度任务
      • 删除定时调度任务
      • 创建和更新定时调度任务
      • 查看定时调度任务
  • API3.0
    • 集群相关接口
      • 删除集群
  • Elasticsearch
    • 用户手册
      • YML参数配置
      • 权限管理
      • 智能巡检
      • 数据迁移
      • 基于BOS的快照与恢复
      • 集群列表
      • 账号使用说明
      • 多可用区部署
      • 定时调度
      • 数据量观测
      • 日志查询
        • 日志查询(旧)
        • 日志查询(新)
        • 日志导出
        • 查询语法
      • 集群配置
        • 配置同义词
      • 插件管理
        • 上传与安装自定义插件
        • Elasticsearch插件列表
        • 系统默认插件
          • analysis-pinyin拼音分词插件
          • IK中文分词插件与动态更新词典
          • compression-zstd插件
          • CCR插件
          • 限流插件
          • 动态同义词插件
          • 简繁体转换插件
          • ingest attachment插件
          • SQL插件
      • 配置变更
        • 节点数据迁移
        • 集群变配说明与建议
        • 集群扩缩容
      • 版本升级
        • 升级版本
        • 内核版本说明
        • 升级检查
      • 集群监控报警
        • 监控查看及指标说明
        • 配置报警
      • 集群管理
        • 集群重启
        • 变更HTTPS协议用户指南
        • 节点启停
        • 查看集群信息
        • 集群创建
        • 公网绑定
        • 修改集群名称
        • 跨可用区迁移集群
        • 集群删除
        • 集群列表
        • 自动续费
        • 密码重置
        • ES服务区域代码
      • 账户管理
        • 多用户访问控制
  • 文档中心
  • arrow
  • ElasticsearchBES
  • arrow
  • 向量检索特性
  • arrow
  • 资源规划
本页目录
  • 资源估算
  • CPU资源
  • 内存资源
  • 快速评估内存
  • 内存详细估算方式
  • HNSW 内存预估公式
  • IVF 内存预估公式
  • 节点规模试算
  • 磁盘资源

资源规划

更新时间:2025-08-20

使用BES向量数据库前,用户需要优先结合业务需求和所存数据,评估集群所需的资源容量。评估方式如下:

资源估算

CPU资源

CPU资源决定了向量数据库查询的QPS能力,以基于标准embedding的768维数据为例,单节点100万条数据的情况下,数据节点的CPU数量与查询QPS能力关系如下:

Plain Text
1CPU核数 = 预估QPS / 80

上述核数估计方式是经验公式,实际生产中一般需要通过压测方式评估最佳CPU核数选择。

内存资源

BES的数据节点默认会预留一半内存给 JVM(JVM最大占用30G内存),向量模块默认分配剩余内存的 50% 为向量数据构建索引。

Plain Text
1向量索引的最大内存占用比例可以通过`circuit_breaker_limit`参数调节,默认设置为 50%。调节方式如下:
2PUT /_cluster/settings
3{
4    "persistent" : {
5        "bpack.knn.memory.circuit_breaker.limit" : "70%"
6    }
7}
快速评估内存

我们对于单节点容纳常用维度向量的能力进行了预算;提供不同节点规格,单节点支持常用维度向量的最大数据数量级。

如果用户使用的向量维度,算法以及向量模块分配内存比例与我们计算条件相匹配,可以通过下表进行快速集群规模计算。

基于标准embedding的768维数据,以HNSW算法存储,circuit_breaker_limit 参数为 50% 情况下,单节点支持最大向量数据量级如下表所示:

BES数据节点内存规格 JVM堆内存 向量索引占用的最大内存 单节点支持的最大向量数据量
32G 16G 8G 2,000,000
64G 30G 17G 4,000,000
128G 30G 49G 14,000,000

基于标准embedding的384维数据,以HNSW算法存储,circuit_breaker_limit 参数为 50% 情况下,单节点支持最大向量数据量级如下表所示:

BES数据节点内存规格 JVM堆内存 向量索引占用的最大内存 单节点支持的最大向量数据量
32G 16G 8G 4,000,000
64G 30G 17G 9,000,000
128G 30G 49G 26,000,000

上述单节点支持的最大向量数据量,均在不存在副本情况计算所得;如果存在k个副本,则单节点支持的最大向量数据量需要除以(1+k)

例如基于标准embedding的768维数据,以HNSW算法存储,circuit_breaker_limit 参数为 50% 为情况下,如果存在3个副本,32G规格节点单节点最大支持向量的数据量为500000

内存详细估算方式

如果用户使用的向量维度、算法或者内存分配比例参数与上述预算条件不同,可以通过以下方式计算所需的集群规模。

以下为一种通过估算集群的内存用量来计算集群规模的方法。需要考虑的因素包括算法的选择、给向量索引分配内存比例、向量维度和数量以及副本数。

HNSW 内存预估公式

HNSW 所需的存放向量索引内存估算公式为:

Plain Text
1(1.1 * (4 * dims + 8 * M) * num of vectors ) bytes

注:其中M值表示构造HNSW索引期间为每个新元素创建的双向链接数。M值越高,消耗内存、存储空间以及构造时间越多但是准确率更高。

建议根据min(向量维度 * 1.5, 32)取值,一般12-48可以满足大多数场景的需求。

假设用户有100万个维度为 768 的向量,且 M 设置为 32,内存需求可以估计如下:

Plain Text
11.1 * (4 * 768 + 8 * 32) * 1,000,000 ≈ 3.409 GB
IVF 内存预估公式

IVF 所需的存放向量索引内存估算公式为:

Plain Text
11.1 * (((4 * dims) * num of vectors) + (4 * nlist * dims)) bytes.

假设用户有100万个维度为256的向量,且 nlist 设置为128,内存需求可以估计如下:

Plain Text
11.1 * (((4 * 256) * 1,000,000) + (4 * 128 * 256))  ≈ 1.126 GB
节点规模试算

以HNSW算法为例,1亿条768维向量(默认 M 为32),副本数为1,节点规格选择8核64G,则使用节点数为

Plain Text
1向量占用的内存总量 (1.1 * (4 * dims + 8 * M) * num of vectors ) bytes = (1.1 * (4 * 768 + 8 * 32) * 10kw)= 366080000000 byte ≈ 340.939 GB
2考虑到有1个副本,所需要提供给向量的总内存为 340.939 GB * (1 + 1) = 681.878 GB
3使用默认circuit_breaker_limit = 50%,则规格为64G的节点,单节点可以提供给向量数据的最大内存为(64G-30G)* 50% = 17G
4因此需要节点数为 681.878 GB / 17G = 40.011台 ≈ 41 台

如果使用16核128G节点,并且调整 circuit_breaker_limit 为70%,则使用节点数为

Plain Text
1向量占用的内存总量 (1.1 * (4 * dims + 8 * M) * num of vectors ) bytes = (1.1 * (4 * 768 + 8 * 32) * 10kw)= 366080000000 byte ≈ 340.939 GB
2考虑到有1个副本,所需要提供给向量的总内存为 340.939 GB * (1 + 1) = 681.878 GB
3使用默认circuit_breaker_limit = 50%,则规格为128G的节点,单节点可以提供给向量数据的最大内存为(128G-30G)* 70% = 68.6G
4因此需要节点数为 681.878 GB / 68.6G = 42.617台 ≈ 9.940 台 ≈ 10 台

磁盘资源

数据节点所需存储容量计算方式如下:

Plain Text
1存储容量 = 源数据大小 * (1 + 副本数量) * (1 + 数据膨胀) * (1 + 内部其他开销) * (1 + 预留空间)
2
3源数据大小 = 标量数据量 + 向量数据量
4标量数据量 = 原始标量数据的字节数
5向量数据量 ≈ (4 * dims) * num of vectors * 4
  • 副本数量: 推荐的副本数量为1
  • 数据膨胀: 一般情况下源数据会膨胀10%-50%,用于 ES 存储索引、列存数据等 (_all参数等未计算)
  • 内部其他开销: 需要预留20%,用于 segment 合并、ES Translog 等内部操作
  • 安全阈值: 在上述基础上,通常至少再额外预留30%的安全阈值

因此最终的所需容量计算公式为:

Plain Text
1存储容量 ≈ 源数据大小 * (1 + 副本数量) * 1.7

具体原理详见 https://cloud.baidu.com/doc/BES/s/Vke3oar2l

以8核64G和16核128G的BES节点为例,数据量和选购磁盘的关系如下:

标量数据 向量数据量 (基于标准embedding的768维数据) 副本分片数 节点规格 建议节点数 所需磁盘总大小 建议选购单机规格
1000G 10,000,000 1 8核64G 5 3520G 8核64G + 700G磁盘
10,000G 100,000,000 1 8核64G 41 35200G 8核64G + 900G磁盘
1000G 10,000,000 1 16核128G 2 3520G 16核128G + 1.8T磁盘
10,000G 100,000,000 1 16核128G 10 35200G 16核128G + 3.5T磁盘

上一篇
Java-SDK
下一篇
关键概念