管理标量Indexes

更新时间:

本篇为您介绍如何在Milvus中为标量字段(包括整数、字符串等非向量属性)创建索引,以实现对标量元数据的有效过滤。与传统关系型数据库中的索引作用相似,Milvus中的标量字段索引旨在加速对非向量属性的查询筛选过程,提升数据检索效率。

前提条件

  • 已在本地客户端成功安装了PyMilvus库,并将其更新至当前最新版本。

    如果您尚未在本地客户端安装PyMilvus库,或者需要将其更新至当前最新版本,您可以执行以下命令。

    pip install --upgrade pymilvus
  • 已创建Milvus实例,请参见详情快速创建Milvus实例

创建索引

自动索引

在创建索引时无需指定index_type参数。Milvus会依据标量字段的实际数据类型(如整数、字符串等),自动选择合适的索引类型进行创建。

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Milvus实例的公网地址。
    token="<yourUsername>:<yourPassword>",  # 登录Milvus实例的用户名和密码。
    db_name="default"  # 待连接的数据库名称,本文示例为默认的default。
)

index_params = client.prepare_index_params()

index_params.add_index(
    field_name="scalar_field_1",  # 声明需要创建index的标量字段。
    index_name="default_index"  # index名称。
)

client.create_index(
    collection_name="<yourCollectionname>",  # 声明index所属的Collection。
    index_params=index_params
)

自定义索引

在创建索引时通过指定index_type参数,您可以选择希望使用的索引类型。

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Milvus实例的公网地址。
    token="<yourUsername>:<yourPassword>",  # 登录Milvus实例的用户名和密码。
    db_name="default"  # 待连接的数据库名称,本文示例为默认的default。
)

index_params = client.prepare_index_params()

index_params.add_index(
    field_name="scalar_field_2",  # 声明需要创建index的标量字段。
    index_type="STL_SORT",  # index类型,可以为INVERTED、STL_SORT和Trie。
    index_name="stl_sort_index"   # index名称。
)

client.create_index(
    collection_name="<yourCollectionname>",
    index_params=index_params
)

查看索引

您可以使用list_indexes函数查看标量索引信息。

client.list_indexes(
    collection_name="<yourCollectionname>"
)