写入和查询数据

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
  • 操作指南
  • arrow
  • 写入和查询数据
本页目录
  • 写入数据
  • bulk写入
  • 集群参数配置
  • 查询数据
  • hnsw、hnsw_sq8、hnsw_pq 查询示例
  • 参数说明
  • hnsw + filter 查询示例
  • ivf、ivf_pq 查询示例
  • 参数说明
  • ivf_hnsw、ivf_hnsw_pq 查询示例
  • 精确检索查询示例

写入和查询数据

更新时间:2025-08-20

写入数据

bulk写入

用户创建向量索引后,即可使用ES BULK API写入数据。不同的index_type与space_type,在数据写入时没有区别。 在以下示例中,我们向my_index索引的field_hnsw和field_linear字段分别写入样例向量数据。

JSON
1POST my_index/_bulk
2{"index":{}}
3{"field_hnsw":[3.5,4.5,6.5,6.5], "field_linear":[3.5,4.5,6.5,6.5]}
4{"index":{}}
5{"field_hnsw":[3.5,4.5,6.5,6.5], "field_linear":[3.5,4.5,6.5,6.5]}
6{"index":{}}
7{"field_hnsw":[5.5,6.5,6.5,6.5], "field_linear":[3.5,4.5,6.5,6.5]}
8...

集群参数配置

数据写入以后,BES会在后台为向量字段构建向量索引,用户可以通过bpack.knn.index_thread_qty参数设置构建向量索引的并发度,默认值是1,取值范围[1, 32]。并发度越高,构建索引的速度越快,不过CPU消耗也会越高,需要注意过高的bpack.knn.index_thread_qty值可能会导致CPU资源耗尽,影响同时间的检索请求。

bpack.knn.index_thread_qty参数的设置方式如下:

JSON
1PUT /_cluster/settings
2{
3  "persistent" : {
4    "bpack.knn.index_thread_qty" : 4
5  }
6}

查询数据

hnsw、hnsw_sq8、hnsw_pq 查询示例

因为hnsw、hnsw_sq8、hnsw_pq 类型字段的查询参数相同,所以我们用一个示例进行说明。

在以下示例中,我们基于 my_index 索引的 field_hnsw 和file-type字段进行检索,其中file-type字段是keyword类型,存储了图片类型;field_hnsw字段是bpack_vector类型,存储了图像的embedding向量。

JSON
1GET my-index/_search
2{
3  "size": 3, // 期望的查询结果集大小限制
4  "_source": ["id"], // 期望返回的字段列表
5  "query": {
6    "knn": { 
7      "field_hnsw": { // 要检索的向量字段
8        "vector": [2, 3, 5, 6], // 查询向量
9        "k": 10, // 查询的最近邻的数量
10        "ef": 256, // hnsw算法的ef_search参数,表示检索最近邻时的动态扫描队列大小
11        "filter": { // 填写所需的filter,不需要filter则省略
12          "term": {
13            "file-type": "png"
14          }
15        }
16      }
17    }
18  }
19}

参数说明

参数 类型 是否必填 说明
ef int 否 hnsw算法的ef_search参数,表示检索最近邻时的动态扫描队列大小。提高ef_search参数可以降低检索陷入局部最优解的概率,提高召回率,相应的,也会消耗更多cpu和内存资源,使查询性能降低。取值需大于k,一般建议200以上。

hnsw + filter 查询示例

以下示例展示了一个较复杂的filter过滤条件+hnsw检索的查询DSL,其中file-type字段是keyword类型,存储了图片类型;description是text类型,存储了图片的描述;size 是long类型,存储了图片大小;user_id是keyword类型,存储了图片的用户标识;field_hnsw字段是bpack_vector类型,存储了图像的embedding向量。

JSON
1GET my-index/_search
2{
3  "size": 3, // 期望的查询结果集大小限制
4  "_source": ["id"], // 期望返回的字段列表
5  "query": {
6    "knn": { 
7      "field_hnsw": { // 要检索的向量字段
8        "vector": [2, 3, 5, 6], // 查询向量
9        "k": 10, // 查询的最近邻的数量
10        "ef": 256, // hnsw算法的ef_search参数,表示检索最近邻时的动态扫描队列大小
11        "filter": { // 填写用户所需的filter,不需要filter则省略
12          "bool": {
13            "must": [
14              {
15                "term": {
16                  "file-type": "png"
17                }
18              },
19              {
20                "match": {
21                  "description": {
22                    "query": "little cat"
23                  }
24                }
25              },
26              {
27                "range": {
28                  "size":{
29                    "gte": 1024
30                  }
31                }
32              }
33            ],
34            "must_not": [
35              {
36                "terms": {
37                  "user_id": ["aaa", "bbb"]
38                }
39              }
40            ]
41          }
42        }
43      }
44    }
45  }
46}

ivf、ivf_pq 查询示例

因为ivf、ivf_pq 类型字段的查询参数相同,所以我们用一个示例进行说明。

在以下示例中,我们基于 my_index 索引的 field_ivf 字段进行检索,field_ivf字段是bpack_vector类型,存储了图像的embedding向量。

JSON
1GET my-index/_search
2{
3  "size": 3, // 期望的查询结果集大小限制
4  "_source": ["id"], // 期望返回的字段列表
5  "query": {
6    "knn": { 
7      "field_ivf": { // 要检索的向量字段
8        "vector": [2, 3, 5, 6], // 查询向量
9        "k": 10, // 查询的最近邻的数量
10        "nprobes": 10 // ivf系索引检索时扫描的桶数量
11      }
12    }
13  }
14}

参数说明

参数 类型 是否必填 说明
nprobes int 否 ivf系索引检索时扫描的桶数量,nprobes越大,recall越高,但查询性能越差。可以从 nlist / 32 开始调整。再参照用户目标召回率来调整,如果取值等于nlist,则查询性能会跟暴力检索效果相似。

ivf_hnsw、ivf_hnsw_pq 查询示例

因为ivf_hnsw、ivf_hnsw_pq 类型字段的查询参数相同,同时包括ivf索引的参数和hnsw索引的参数,所以我们用一个示例进行说明。

在以下示例中,我们基于 my_index 索引的 field_ivf_hnsw 进行检索,field_ivf_hnsw字段是bpack_vector类型,存储了图像的embedding向量。

JSON
1GET my-index/_search
2{
3  "size": 3, // 期望的查询结果集大小限制
4  "_source": ["id"], // 期望返回的字段列表
5  "query": {
6    "knn": { 
7      "field_ivf_hnsw": { // 要检索的向量字段
8        "vector": [2, 3, 5, 6], // 查询向量
9        "k": 10, // 查询的最近邻的数量
10        "nprobes": 10, // ivf系索引检索时扫描的桶数量
11        "ef": 256 // hnsw算法的ef_search参数,表示检索最近邻时的动态扫描队列大小
12      }
13    }
14  }
15}

精确检索查询示例

bpack_vector类型字段均可以通过指定 linear:true 参数进行精确检索,会遍历全量数据进行暴力计算,确保结果的召回率。不过查询延迟会随着数据量近似线性增长,以hnsw索引字段为例:

JSON
1GET my-index/_search
2{
3  "size": 3,
4  "_source": ["id"],
5  "query": {
6    "knn": {
7      "field_hnsw": { // 要检索的向量字段
8        "vector": [2, 3, 5, 6], // 查询向量
9        "k": 10,
10        "linear": true, // true代表直接进行精确检索,即扫描全量数据进行暴力计算,默认false
11        "filter": {  // 填写所需的filter,不需要filter则省略
12           "term": {
13            "file-type": "png"
14          }
15        }
16      }
17    }
18  }
19}

此外,也可以通过ES的script_score查询通过脚本计算进行精确检索,也是遍历全量数据进行暴力计算。

BES通过自定义script engine实现了简化的script计算逻辑,通过指定"lang":"knn"和"source":"bpack_knn_script"可以使用BES预定义的计算逻辑,只需要在params中指定向量字段和距离算法等参数即可。具体的距离计算公式和score计算公式请参考文档:算法介绍。示例如下:

JSON
1POST my-index/_search
2{
3   "size": 3, 
4   "_source": ["id"],
5   "query": {
6      "script_score": {
7         "query": { // 填写所需要的filter,不需要filter则使用match_all
8            "match_all": {}
9         },
10         "script": {
11            "source": "bpack_knn_script", //固定参数
12            "lang": "knn", // 固定参数
13            "params": {
14               "space": "cosine", // 距离计算算法,支持 l2/cosine/innerproduct
15               "field": "field1", // 向量字段
16               "vector": [3.5, 2.5] // 查询向量
17            }
18         }
19      }
20   }
21}

如果需要更灵活的计算逻辑,也可以直接使用默认的painless脚本语言,在source调用距离计算函数,完成复杂的计算。示例如下:

JSON
1GET my-index/_search
2{
3   "size": 3, 
4   "_source": ["id"],
5   "query": {
6      "script_score": {
7         "query": { // 填写所需要的filter,不需要filter则使用match_all
8            "match_all": {}
9         },
10         "script": {
11            "source": "(1.0 + cosineSimilarity(params.query_vector, doc[params.field])) / 2", // 支持的距离计算函数包括,l2Squared/cosineSimilarity/innerProduct
12            "params": {
13               "field": "field1", // 向量字段
14               "query_vector": [3.5, 2.5] // 查询向量
15            }
16         }
17      }
18   }
19}

上一篇
向量数据库
下一篇
训练模型