You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Milvus集合导出全部数据(约300万条记录)?

解决Milvus字符串主键场景下全量数据导出的问题

针对你遇到的query接口条数限制、字符串主键无法用区间查询的问题,给你三个实操性的解决方案:

方案1:借助Search接口分页遍历

Milvus的Search接口支持offset参数实现分页,不受Query接口的默认条数限制,即使主键是字符串也能全量导出:

  1. 先调用num_entities获取集合总数据量
  2. 循环分页调用Search,每次递增offset,limit设为16384(或Milvus允许的最大值)
  3. 为了减少向量检索的开销,可以传入一个符合维度的空向量(比如全0向量),并把nprobe设为1

Python SDK示例代码

from pymilvus import Collection

# 加载目标集合
old_col = Collection("your_old_collection")
old_col.load()

total = old_col.num_entities
page_size = 16384
offset = 0
all_records = []

# 假设集合中向量字段名为"vector_field"
vec_dim = old_col.schema.fields[old_col.schema.anns_field].dim
dummy_vec = [[0.0]*vec_dim]

while offset < total:
    res = old_col.search(
        data=dummy_vec,
        anns_field="vector_field",
        param={"nprobe": 1},
        limit=page_size,
        offset=offset,
        output_fields=["*"],
        consistency_level="Strong"
    )
    # 提取当前页数据
    for hits in res:
        all_records.extend([hit.entity.to_dict() for hit in hits])
    offset += page_size

# all_records即为全量导出数据

方案2:使用Milvus官方dump工具

Milvus 2.x提供了milvusctl dump命令,可直接全量导出集合数据,无需手动处理分页,对主键类型无限制:

命令示例

# 导出指定集合到指定目录
milvusctl dump -c /path/to/milvus.yaml -n default -cname old_collection -o ./dump_output

导出后会生成JSON格式的数据文件,后续可直接用milvusctl restore或自定义脚本将数据插入到带动态字段的新集合。

方案3:主键哈希分片查询

对字符串主键做哈希处理,将哈希值划分为多个区间,通过Query接口按哈希区间分批查询:

  1. 计算字符串主键的哈希值,划分若干连续区间
  2. 循环用expr条件查询每个区间的数据
  3. 最后校验导出数据总量与集合总条数是否一致,避免哈希冲突导致的遗漏

Python SDK示例代码片段

total = old_col.num_entities
# 根据总条数划分足够多的哈希区间,这里示例划分为10个区间
hash_ranges = [(i*100000, (i+1)*100000-1) for i in range(10)]
all_records = []

for start, end in hash_ranges:
    expr = f"hash(primary_key) between {start} and {end}"
    batch_data = old_col.query(expr=expr, output_fields=["*"])
    all_records.extend(batch_data)
    if len(all_records) >= total:
        break

内容的提问来源于stack exchange,提问作者Jade Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 13:42:41