"github.com/milvus-io/milvus/client/v2/milvusclient"
"github.com/milvus-io/milvus/client/v2/entity"
"github.com/milvus-io/milvus/client/v2/index"
collectionName := "VDBBench"
indexName := "vector_idx"
vectorFieldName := "vector"
ctx, cancel := context.WithCancel(context.Background())
c, err := milvusclient.New(ctx, &milvusclient.ClientConfig{Address: milvusAddr, Username: "xxxx", Password:"xxxx"})
log.Fatalf("连接 Milvus 失败: %v", err)
fmt.Println("✅ 成功连接 Milvus")
fmt.Println("\n📌 开始释放索引/集合...")
err = c.ReleaseCollection(ctx, milvusclient.NewReleaseCollectionOption(collectionName))
log.Fatalf("释放索引失败: %v", err)
fmt.Println("\n📌 开始删除索引...")
err = c.DropIndex(ctx, milvusclient.NewDropIndexOption(collectionName, indexName))
log.Fatalf("删除索引失败: %v", err)
fmt.Println("✅ 成功删除索引 vector_idx")
fmt.Println("\n📌 开始创建 DISKANN 索引...")
index := index.NewDiskANNIndex(entity.L2)
option := milvusclient.NewCreateIndexOption(collectionName, vectorFieldName, index)
option.WithExtraParam("store_strategy", "DISK")
option.WithExtraParam("max_degree", 128)
indexTask, err := c.CreateIndex(ctx, option)
log.Fatalf("创建 DISKANN 索引失败: %v", err)
err = indexTask.Await(ctx)
log.Fatalf("创建失败: %v", err)
fmt.Println("✅ 成功创建 DISKANN 索引(max_degree=48)")
fmt.Println("\n📌 开始加载索引/集合...")
loadTask, err := c.LoadCollection(ctx, milvusclient.NewLoadCollectionOption(collectionName))
log.Fatalf("加载索引失败: %v", err)
err = loadTask.Await(ctx)
log.Fatalf("加载失败: %v", err)
fmt.Println("\n🎉 所有操作执行完成!")