如何获取Milvus集合数据?查询代码报错求助
问题解决:Milvus查询报错无法解析表达式
错误原因
从集合描述信息能明确两个关键点:
- 集合的主键字段实际名为
id,而非你代码里用的_id - 集合未启用动态字段(
enable_dynamic_field: False)
_id是Milvus动态字段模式下的主键别名,但当前集合不支持动态字段,且实际主键字段为id,因此用_id >= 0作为过滤条件会导致表达式解析失败。
修正后的代码
方案1:使用正确的主键字段名过滤
from pymilvus import MilvusClient # 初始化Milvus客户端 client = MilvusClient( uri="http://localhost:19530", token="root:Milvus" ) res = client.query( collection_name="test_collection", filter="id >= 0", # 替换为集合实际主键字段名id limit=5, ) print(res)
方案2:无需过滤,直接获取前5条数据
如果只是想查看集合中的数据,不需要过滤条件的话,可以简化代码:
from pymilvus import MilvusClient client = MilvusClient( uri="http://localhost:19530", token="root:Milvus" ) res = client.query( collection_name="test_collection", limit=5, output_fields=["id", "embedding"] # 可选,指定要返回的字段 ) print(res)
补充说明
- 只有当集合启用动态字段时,Milvus才会自动生成
_id作为主键别名;未启用动态字段时,必须使用定义集合时指定的实际主键字段名。 output_fields参数可以明确指定返回哪些字段,避免返回不必要的数据(不指定时默认返回所有字段)。
内容的提问来源于stack exchange,提问作者merkle
相关产品推荐
相关产品推荐

