milvus集合管理

一、创建集合

集合由一个或多个分区组成。在创建新集合时,Milvus会创建一个默认分区_default

1.准备模式

需要创建的集合必须包含一个主键字段和一个向量字段。INT64和String是主键字段支持的数据类型。

首先,准备必要的参数,包括字段模式、集合模式和集合名称。

python 复制代码
from pymilvus import CollectionSchema, FieldSchema, DataType
book_id = FieldSchema(
  name="book_id",
  dtype=DataType.INT64,
  is_primary=True,
)
book_name = FieldSchema(
  name="book_name",
  dtype=DataType.VARCHAR,
  max_length=200,
  # The default value will be used if this field is left empty during data inserts or upserts.
  # The data type of `default_value` must be the same as that specified in `dtype`.
  default_value="Unknown"
)
word_count = FieldSchema(
  name="word_count",
  dtype=DataType.INT64,
  # The default value will be used if this field is left empty during data inserts or upserts.
  # The data type of `default_value` must be the same as that specified in `dtype`.
  default_value=9999
)
book_intro = FieldSchema(
  name="book_intro",
  dtype=DataType.FLOAT_VECTOR,
  dim=2
)
# 集合的定义
schema = CollectionSchema(
  fields=[book_id, book_name, word_count, book_intro],
  description="Test book search",
  enable_dynamic_field=True
)
collection_name = "book"

也可以使用预定义的模式新建集合:

python 复制代码
from pymilvus import Collection
collection = Collection(
    name=collection_name,
    schema=schema,
    using='default',
    shards_num=2
    )

二、重命名集合

使用rename_collection方法

python 复制代码
from pymilvus import Collection, FieldSchema, CollectionSchema, DataType, connections, utility
connections.connect(alias="default")
schema = CollectionSchema(fields=[
...     FieldSchema("int64", DataType.INT64, description="int64", is_primary=True),
...     FieldSchema("float_vector", DataType.FLOAT_VECTOR, is_primary=False, dim=128),
... ])
collection = Collection(name="old_collection", schema=schema)
utility.rename_collection("old_collection", "new_collection") # Output: True
utility.drop_collection("new_collection")
utility.has_collection("new_collection") # Output: False

三、修改集合

主要还是修改生存时间

python 复制代码
collection.set_properties(properties={"collection.ttl.seconds": 1800})

四、检查集合信息

1.检查集合是否存在

python 复制代码
from pymilvus import utility
utility.has_collection("book")

2.检查集合的细节信息

python 复制代码
from pymilvus import Collection
collection = Collection("book")  # Get an existing collection.

collection.schema                # Return the schema.CollectionSchema of the collection.
collection.description           # Return the description of the collection.
collection.name                  # Return the name of the collection.
collection.is_empty              # Return the boolean value that indicates if the collection is empty.
collection.num_entities          # Return the number of entities in the collection.
collection.primary_field         # Return the schema.FieldSchema of the primary key field.
collection.partitions            # Return the list[Partition] object.
collection.indexes               # Return the list[Index] object.
collection.properties		# Return the expiration time of data in the collection.

3.列出索引的集合

python 复制代码
from pymilvus import utility
utility.list_collections()

五、删除集合

python 复制代码
from pymilvus import utility
utility.drop_collection("book")

六、集合的别名

1.创建集合的别名

在创建集合时可以,也可以如下:

python 复制代码
from pymilvus import utility
utility.create_alias(
  collection_name = "book",
  alias = "publication"
)

2.删除别名

python 复制代码
from pymilvus import utility
utility.drop_alias(alias = "publication")

3.修改别名

python 复制代码
from pymilvus import utility
utility.alter_alias(
  collection_name = "book",
  alias = "publication"
)

七、加载集合

1.Milvus 中的所有搜索和查询操作都在内存中执行。

在当前版本中,所有在线查询节点都将根据用户指定的副本数分为多个副本组。所有副本组都应具有最小的内存资源来加载所提供的集合的一个副本。

python 复制代码
from pymilvus import Collection, utility
 
# Get an existing collection.
collection = Collection("book")      
collection.load(replica_number=2)
 
# Check the loading progress and loading status
utility.load_state("book")
# Output: <LoadState: Loaded>
 
utility.loading_progress("book")
# Output: {'loading_progress': 100%}
 

2.获取副本信息

python 复制代码
from pymilvus import Collection
collection = Collection("book")      # Get an existing collection.
collection.load(replica_number=2)    # Load collection as 2 replicas
result = collection.get_replicas()
print(result)
 

八、释放集合

在搜索或查询后释放集合以减少内存使用

python 复制代码
from pymilvus import Collection
collection = Collection("book")      # Get an existing collection.
collection.release()
相关推荐
明月看潮生9 分钟前
青少年编程与数学 02-020 C#程序设计基础 06课题、运算符和表达式
开发语言·青少年编程·c#·编程与数学
androidwork11 分钟前
Kotlin全栈工程师转型路径
android·开发语言·kotlin
不二狗3 小时前
每日算法 -【Swift 算法】实现回文数判断!
开发语言·算法·swift
csdn_aspnet4 小时前
Java 程序求圆弧段的面积(Program to find area of a Circular Segment)
java·开发语言
EanoJiang4 小时前
C#核心
c#
进击的_鹏5 小时前
【C++】红黑树的实现
开发语言·c++
无心水5 小时前
【后端高阶面经:MongoDB篇】41、MongoDB 是怎么做到高可用的?
java·开发语言·mongodb·java面试·高可用·后端高阶面经·后端工程师的高阶面经
无心水6 小时前
【后端高阶面经:MongoDB篇】40、怎么优化MongoDB的查询性能?
java·开发语言·mongodb·java面试·后端高阶面经·后端工程师的高阶面经·java高阶面经
信息化未来6 小时前
python 生成复杂表格,自动分页等功能
开发语言·数据结构·python
程序猿阿伟6 小时前
《深入Python:新手易踩的语法雷区与进阶启示》
开发语言·python