55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
# 通过pymilvus sdk来操作数据库
|
|
|
|
from pymilvus import (
|
|
connections,
|
|
db,
|
|
connections,
|
|
Collection,
|
|
utility,
|
|
)
|
|
|
|
|
|
def test_connection(
|
|
db_name: str = "blog",
|
|
collection_name: str = "articles",
|
|
fied_name: str = "tile_vector",
|
|
) -> bool:
|
|
try:
|
|
# 建立与milvus的连接
|
|
connections.connect(
|
|
"default", host="49.233.56.55", port="19530", timeout=10, db_name=db_name
|
|
)
|
|
# 使用或者切换到db_name
|
|
db.using_database(db_name)
|
|
if not utility.has_collection(collection_name):
|
|
raise ValueError(f"集合{collection_name}不存在,无法创建索引")
|
|
# 获取集合对象
|
|
collection = Collection(collection_name)
|
|
# 判断是否已经有索引
|
|
has_index = bool(collection.indexes)
|
|
if has_index:
|
|
print("所以已经存在,跳过创建")
|
|
else:
|
|
index_params = {
|
|
"index_type": "IVF_FLAT",
|
|
"metric_type": "L2",
|
|
"params": {"nlist": 128},
|
|
}
|
|
# 创建索引
|
|
collection.create_index(field_name=fied_name, index_params=index_params)
|
|
print("索引创建成功")
|
|
# 加载结合到内存
|
|
collection.load()
|
|
print("集合已经加载到内存,可供查询")
|
|
|
|
except Exception as exc:
|
|
print("索引管理失败:", exc)
|
|
raise
|
|
finally:
|
|
connections.disconnect("default")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if not test_connection():
|
|
raise SystemExit(1)
|