当前位置: 首页 > backend >正文

Milvus(6):Collection 管理分区、管理别名

1 管理分区

        分区是一个 Collection 的子集。每个分区与其父集合共享相同的数据结构,但只包含集合中的一个数据子集。本页将帮助你了解如何管理分区。

1.1 分区概述

        创建一个 Collection 时,Milvus 也会在该 Collection 中创建一个名为_default 的分区。如果不添加其他分区,所有插入到 Collections 中的实体都会进入默认分区,所有搜索和查询也都在默认分区内进行。可以添加更多分区,并根据特定条件将实体插入其中。这样就可以限制在某些分区内进行搜索和查询,从而提高搜索性能。一个 Collections 最多可以有 1,024 个分区。

        Partition Key功能是基于分区的搜索优化,允许 Milvus 根据特定标量字段中的值将实体分配到不同的分区中。该功能有助于实现面向分区的多租户,并提高搜索性能。

1.2 列出分区

        创建 Collections 时,Milvus 还会在该 Collections 中创建一个名为_default 的分区。您可以按以下方式列出 Collections 中的分区。

from pymilvus import MilvusClientclient = MilvusClient(uri="http://localhost:19530",token="root:Milvus"
)res = client.list_partitions(collection_name="my_collection"
)print(res)# Output
#
# ["_default"]

1.3 创建分区

        可以向 Collection 添加更多分区,并根据特定条件向这些分区插入实体。

client.create_partition(collection_name="my_collection",partition_name="partitionA"
)res = client.list_partitions(collection_name="my_collection"
)print(res)# Output
#
# ["_default", "partitionA"]

1.4 检查特定分区

        以下代码片段演示了如何检查特定 Collections 中是否存在分区。

res = client.has_partition(collection_name="my_collection",partition_name="partitionA"
)print(res)# Output
#
# True

1.5 加载和释放分区

        可以分别加载集合中的特定分区。值得注意的是,如果集合中存在未加载的分区,则集合的加载状态会保持未加载状态。

client.load_partitions(collection_name="my_collection",partition_names=["partitionA"]
)res = client.get_load_state(collection_name="my_collection",partition_name="partitionA"
)print(res)
# Output
#
# {
#     "state": "<LoadState: Loaded>"
# }

        还可以释放特定分区。

client.release_partitions(collection_name="my_collection",partition_names=["partitionA"]
)res = client.get_load_state(collection_name="my_collection",partition_name="partitionA"
)print(res)# Output
#
# {
#     "state": "<LoadState: NotLoaded>"
# }

1.6 删除分区

        可以丢弃不再需要的分区。在丢弃分区之前,请确保该分区已被释放。

client.release_partitions(collection_name="my_collection",partition_names=["partitionA"]
)client.drop_partition(collection_name="my_collection",partition_name="partitionA"
)res = client.list_partitions(collection_name="my_collection"
)print(res)# ["_default"]

2 管理别名

2.1 别名概述

        可以为你的 Collections 创建别名。一个集合可以有多个别名,但集合不能共享一个别名。在收到针对某个 Collection 的请求时,Milvus 会根据提供的名称定位该 Collection。如果所提供名称的 Collection 不存在,Milvus 会继续定位所提供名称的别名。你可以使用 Collections 别名来调整代码,以适应不同的情况。

2.2 创建别名

        以下代码片段演示了如何为 Collection 创建别名。

from pymilvus import MilvusClientclient = MilvusClient(uri="http://localhost:19530",token="root:Milvus"
)# 9. 管理别名
# 9.1. 创建别名
client.create_alias(collection_name="my_collection_1",alias="bob"
)client.create_alias(collection_name="my_collection_1",alias="alice"
)

        以下代码片段演示了列出分配给特定 Collection 的别名的过程。

# 9.2. 别名列表
res = client.list_aliases(collection_name="my_collection_1"
)print(res)# Output
#
# {
#     "aliases": [
#         "bob",
#         "alice"
#     ],
#     "collection_name": "my_collection_1",
#     "db_name": "default"
# }

2.3 描述别名

        以下代码片段详细描述了特定别名,包括分配给该别名的 Collections 名称。

# 9.3. 描述的别名
res = client.describe_alias(alias="bob"
)print(res)# Output
#
# {
#     "alias": "bob",
#     "collection_name": "my_collection_1",
#     "db_name": "default"
# }

2.4 更改别名

        可以将已分配给特定集合的别名重新分配给另一个集合。

# 9.4 为其他集合重新分配别名
client.alter_alias(collection_name="my_collection_2",alias="alice"
)res = client.list_aliases(collection_name="my_collection_2"
)print(res)# Output
#
# {
#     "aliases": [
#         "alice"
#     ],
#     "collection_name": "my_collection_2",
#     "db_name": "default"
# }res = client.list_aliases(collection_name="my_collection_1"
)print(res)# Output
#
# {
#     "aliases": [
#         "bob"
#     ],
#     "collection_name": "my_collection_1",
#     "db_name": "default"
# }

2.5 删除别名

        下面的代码片段演示了删除别名的过程。

# 9.5 删除别名
client.drop_alias(alias="bob"
)client.drop_alias(alias="alice"
)
http://www.xdnf.cn/news/1675.html

相关文章:

  • 深度解析 Kubernetes 配置管理:如何安全使用 ConfigMap 和 Secret
  • 字典与集合——测试界的黑话宝典与BUG追捕术
  • C语言编程--16.删除链表的倒数第n个节点
  • 触觉智能RK3506核心板,工业应用之RK3506 RT-Linux实时性测试
  • arm64适配系列文章-第九章-arm64环境上sentinel的部署
  • 【mysql】windows mysql命令
  • Verilog 语法 (一)
  • springboot在eclipse里面运行 run as 是Java Application还是 Maven
  • Java面试场景篇:分布式锁的实现与组件详解
  • MCP‌和LangGraph‌结合2
  • 基于Vue3 的 h5监听从左到右手滑返回上一页
  • 开源模型应用落地-语音合成-MegaTTS3-零样本克隆与多语言生成的突破
  • 从工作到娱乐:Codigger Desktop 让桌面环境更智能
  • c#-命名和书写规范
  • k8s基于角色的访问控制(RBAC)
  • GPT-4o最新图像生成完全指南:10大应用场景与提示词模板
  • opencv--图像变换
  • 悟空统计:小而美的网站流量统计工具,免费好用
  • 【金仓数据库征文】从云计算到区块链:金仓数据库的颠覆性创新之路
  • ThreadLocal
  • 医学图像(DICOM数据)读取及显示(横断面、冠状面、矢状面、3D显示)为什么用ITK+VTK,单独用ITK或者VTK能实一样功能吗?
  • centos离线安装ssh
  • C语言中封装JSON数组对象
  • 深度解析@SneakyThrows注解:原理、应用与最佳实践
  • 23种设计模式-行为型模式之策略模式(Java版本)
  • 基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
  • DPIN在AI+DePIN孟买峰会阐述全球GPU生态系统的战略愿景
  • MySQL:数据库设计
  • 【C++入门:类和对象】[3]
  • LJF-Framework 第15章 想想搞点啥-若依管理系统兼容一下