تعديل المجموعة
يمكنك إعادة تسمية مجموعة أو تغيير إعداداتها. تركز هذه الصفحة على كيفية تعديل مجموعة.
إعادة تسمية مجموعة
يمكنك إعادة تسمية مجموعة على النحو التالي.
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.rename_collection(
old_name="my_collection",
new_name="my_new_collection"
)
import io.milvus.v2.service.collection.request.RenameCollectionReq;
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
String CLUSTER_ENDPOINT = "http://localhost:19530";
String TOKEN = "root:Milvus";
// 1. Connect to Milvus server
ConnectConfig connectConfig = ConnectConfig.builder()
.uri(CLUSTER_ENDPOINT)
.token(TOKEN)
.build();
MilvusClientV2 client = new MilvusClientV2(connectConfig);
RenameCollectionReq renameCollectionReq = RenameCollectionReq.builder()
.collectionName("my_collection")
.newCollectionName("my_new_collection")
.build();
client.renameCollection(renameCollectionReq);
import { MilvusClient, DataType } from "@zilliz/milvus2-sdk-node";
const address = "http://localhost:19530";
const token = "root:Milvus";
const client = new MilvusClient({address, token});
const res = await client.renameCollection({
oldName: "my_collection",
newName: "my_new_collection"
});
import (
"context"
"fmt"
"github.com/milvus-io/milvus/client/v2/milvusclient"
)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
milvusAddr := "localhost:19530"
token := "root:Milvus"
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
Address: milvusAddr,
APIKey: token,
})
if err != nil {
fmt.Println(err.Error())
// handle error
}
defer client.Close(ctx)
err = client.RenameCollection(ctx, milvusclient.NewRenameCollectionOption("my_collection", "my_new_collection"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/collections/rename" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"collectionName": "my_collection",
"newCollectionName": "my_new_collection"
}'
تعيين خصائص المجموعة
يمكنك تعديل الخصائص على مستوى المجموعة بعد إنشاء مجموعة.
تنطبق جميع الخصائص المدرجة في هذا القسم على المجموعات المُدارة فقط.
الخصائص المدعومة
الخاصية |
الوصف |
|---|---|
|
إذا كانت هناك حاجة إلى حذف بيانات مجموعة ما بعد فترة محددة، ففكر في تعيين وقت التشغيل (TTL) بالثواني. وبمجرد انتهاء مدة TTL، يقوم Milvus بحذف جميع الكيانات من المجموعة. يكون الحذف غير متزامن، مما يشير إلى أن عمليات البحث والاستعلامات لا تزال ممكنة قبل اكتمال الحذف. لمزيد من التفاصيل، راجع تعيين TTL للمجموعة. |
|
يتيح تعيين الذاكرة (Mmap) الوصول المباشر للذاكرة إلى الملفات الكبيرة على القرص، مما يسمح لـ Milvus بتخزين الفهارس والبيانات في كل من الذاكرة والأقراص الصلبة. يساعد هذا النهج في تحسين سياسة وضع البيانات استناداً إلى تكرار الوصول، مما يزيد من سعة التخزين للمجموعات دون التأثير على أداء البحث. لمزيد من التفاصيل، راجع استخدام mmap. |
|
عند تمكين عزل مفتاح التقسيم، يقوم Milvus بتجميع الكيانات استناداً إلى قيمة مفتاح التقسيم ويقوم بإنشاء فهرس منفصل لكل مجموعة من هذه المجموعات. عند تلقي طلب بحث، يقوم Milvus بتحديد موقع الفهرس استناداً إلى قيمة مفتاح التقسيم المحددة في شرط التصفية ويقيد نطاق البحث ضمن الكيانات المضمنة في الفهرس، وبالتالي تجنب مسح الكيانات غير ذات الصلة أثناء البحث وتحسين أداء البحث بشكل كبير. لمزيد من التفاصيل، راجع استخدام عزل مفتاح التقسيم. |
|
تمكين الحقل الديناميكي للمجموعات التي تم إنشاؤها دون تمكينه. بمجرد التمكين، يمكنك إدراج كيانات ذات حقول غير محددة في المخطط الأصلي. لمزيد من التفاصيل، راجع الحقل الديناميكي. |
|
ما إذا كان سيتم السماح للمجموعة بقبول قيم المفتاح الأساسي المقدمة من المستخدم عند تمكين المعرف التلقائي للمجموعة.
|
|
تحديد المنطقة الزمنية الافتراضية لهذه المجموعة عند التعامل مع العمليات الحساسة للوقت، خاصةً حقول |
مثال 1: تعيين TTL على مستوى المجموعة
يوضح مقتطف الشيفرة التالي كيفية تعيين TTL على مستوى المجموعة.
from pymilvus import MilvusClient
client.alter_collection_properties(
collection_name="my_collection",
properties={"collection.ttl.seconds": 60}
)
import io.milvus.param.Constant;
import io.milvus.v2.service.collection.request.AlterCollectionPropertiesReq;
AlterCollectionPropertiesReq alterCollectionReq = AlterCollectionPropertiesReq.builder()
.collectionName("my_collection")
.property(Constant.TTL_SECONDS, "60")
.build();
client.alterCollectionProperties(alterCollectionReq);
res = await client.alterCollection({
collection_name: "my_collection",
properties: {
"collection.ttl.seconds": 60
}
})
err = client.AlterCollectionProperties(ctx, milvusclient.NewAlterCollectionPropertiesOption("my_collection").WithProperty(common.CollectionTTLConfigKey, 60))
if err != nil {
fmt.Println(err.Error())
// handle error
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/collections/alter_properties" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"collectionName": "my_collection",
"properties": {
"collection.ttl.seconds": 60
}
}'
مثال 2: تعيين TTL على مستوى الكيانCompatible with Milvus 3.0.x
يعيّن مقتطف الشيفرة التالي حقلًا موجودًا TIMESTAMPTZ (expire_at) كحقل TTL ل TTL على مستوى الكيان. يجب أن تحتوي المجموعة بالفعل على حقل TIMESTAMPTZ بهذا الاسم، ويجب ألا يتم تعيين collection.ttl.seconds - فوضعا TTL متنافيان.
للاطلاع على سير عمل TTL الكامل على مستوى الكيان (إعداد المخطط، والإدراج، والاستعلام، والتحديث، والإسقاط)، راجع تعيين TTL على مستوى الكيان.
from pymilvus import MilvusClient
client.alter_collection_properties(
collection_name="my_collection",
properties={"ttl_field": "expire_at"}
)
// java
// nodejs
// go
# restful
مثال 3: تمكين mmap
يوضح مقتطف الشيفرة التالي كيفية تمكين mmap.
from pymilvus import MilvusClient
client.alter_collection_properties(
collection_name="my_collection",
properties={"mmap.enabled": True}
)
AlterCollectionPropertiesReq alterCollectionReq = AlterCollectionPropertiesReq.builder()
.collectionName("my_collection")
.property(Constant.MMAP_ENABLED, "True")
.build();
client.alterCollectionProperties(alterCollectionReq);
await client.alterCollectionProperties({
collection_name: "my_collection",
properties: {
"mmap.enabled": true
}
});
err = client.AlterCollectionProperties(ctx, milvusclient.NewAlterCollectionPropertiesOption("my_collection").WithProperty(common.MmapEnabledKey, true))
if err != nil {
fmt.Println(err.Error())
// handle error
}
# restful
curl -X POST "http://localhost:19530/v2/vectordb/collections/alter_properties" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "my_collection",
"properties": {
"mmap.enabled": "true"
}
}'
مثال 4: تمكين مفتاح التقسيم
يوضح مقتطف الشيفرة التالي كيفية تمكين مفتاح التقسيم.
from pymilvus import MilvusClient
client.alter_collection_properties(
collection_name="my_collection",
properties={"partitionkey.isolation": True}
)
AlterCollectionPropertiesReq alterCollectionReq = AlterCollectionPropertiesReq.builder()
.collectionName("my_collection")
.property("partitionkey.isolation", "True")
.build();
client.alterCollectionProperties(alterCollectionReq);
await client.alterCollectionProperties({
collection_name: "my_collection",
properties: {
"partitionkey.isolation": true
}
});
err = client.AlterCollectionProperties(ctx, milvusclient.NewAlterCollectionPropertiesOption("my_collection").WithProperty(common.PartitionKeyIsolationKey, true))
if err != nil {
fmt.Println(err.Error())
// handle error
}
# restful
curl -X POST "http://localhost:19530/v2/vectordb/collections/alter_properties" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"collectionName": "my_collection",
"properties": {
"partitionkey.isolation": "true"
}
}'
مثال 5: تمكين الحقل الديناميكي
يوضح مقتطف الشيفرة التالي كيفية تمكين الحقل الديناميكي.
from pymilvus import MilvusClient
client.alter_collection_properties(
collection_name="my_collection",
properties={"dynamicfield.enabled": True}
)
AlterCollectionPropertiesReq alterCollectionReq = AlterCollectionPropertiesReq.builder()
.collectionName("my_collection")
.property("dynamicfield.enabled", "True")
.build();
client.alterCollectionProperties(alterCollectionReq);
await client.alterCollectionProperties({
collection_name: "my_collection",
properties: {
"dynamicfield.enabled": true
}
});
err = client.AlterCollectionProperties(ctx, milvusclient.NewAlterCollectionPropertiesOption("my_collection").WithProperty(common.EnableDynamicSchemaKey, true))
if err != nil {
fmt.Println(err.Error())
// handle error
}
# restful
curl -X POST "http://localhost:19530/v2/vectordb/collections/alter_properties" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"collectionName": "my_collection",
"properties": {
"dynamicfield.enabled": "true"
}
}'
مثال 6: تمكين السماح_بإدراج_المعرف_التلقائي
تسمح الخاصية allow_insert_auto_id للمجموعة ذات المعرف التلقائي الممكّن بقبول قيم المفتاح الأساسي المقدمة من المستخدم أثناء الإدراج، والإدراج التلقائي، والاستيراد الجماعي. عند ضبطها على "صواب"، يستخدم Milvus قيمة المفتاح الأساسي المقدمة من المستخدم إذا كانت موجودة؛ وإلا فإنه يتم إنشاؤها تلقائيًا. الافتراضي هو "خطأ".
يوضح المثال أدناه كيفية تمكين allow_insert_auto_id:
client.alter_collection_properties(
collection_name="my_collection",
properties={"allow_insert_auto_id": "true"}
)
# After enabling, inserts with a PK column will use that PK; otherwise Milvus auto-generates.
AlterCollectionPropertiesReq alterCollectionReq = AlterCollectionPropertiesReq.builder()
.collectionName("my_collection")
.property("allow_insert_auto_id", "True")
.build();
client.alterCollectionProperties(alterCollectionReq);
await client.alterCollectionProperties({
collection_name: "my_collection",
properties: {
"allow_insert_auto_id": true
}
});
err = client.AlterCollectionProperties(ctx, milvusclient.NewAlterCollectionPropertiesOption("my_collection").WithProperty(common.AllowInsertAutoIDKey, true))
if err != nil {
fmt.Println(err.Error())
// handle error
}
# restful
curl -X POST "http://localhost:19530/v2/vectordb/collections/alter_properties" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"collectionName": "my_collection",
"properties": {
"allow_insert_auto_id": "true"
}
}'
مثال 7: تعيين المنطقة الزمنية للمجموعة
يمكنك تعيين منطقة زمنية افتراضية لمجموعتك باستخدام الخاصية timezone. يحدد هذا كيفية تفسير البيانات المتعلقة بالوقت وعرضها لجميع العمليات داخل المجموعة، بما في ذلك إدراج البيانات والاستعلام وعرض النتائج.
يجب أن تكون قيمة timezone معرّف منطقة زمنية صالحة من IANA، مثل Asia/Shanghai أو America/Chicago أو UTC. سيؤدي استخدام قيمة غير صالحة أو غير قياسية إلى حدوث خطأ عند تعديل خاصية المجموعة.
يوضح المثال أدناه كيفية تعيين المنطقة الزمنية للمجموعة إلى آسيا / شنغهاي:
client.alter_collection_properties(
collection_name="my_collection",
properties={"timezone": "Asia/Shanghai"}
)
AlterCollectionPropertiesReq alterCollectionReq = AlterCollectionPropertiesReq.builder()
.collectionName("my_collection")
.property("timezone", "Asia/Shanghai")
.build();
client.alterCollectionProperties(alterCollectionReq);
// js
err = client.AlterCollectionProperties(ctx, milvusclient.NewAlterCollectionPropertiesOption("my_collection").WithProperty(common.CollectionDefaultTimezone, true))
if err != nil {
fmt.Println(err.Error())
// handle error
}
# restful
curl -X POST "http://localhost:19530/v2/vectordb/collections/alter_properties" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"collectionName": "my_collection",
"properties": {
"timezone": "Asia/Shanghai"
}
}'
إسقاط خصائص المجموعة
يمكنك أيضًا إعادة تعيين خاصية مجموعة عن طريق إسقاطها كما يلي.
client.drop_collection_properties(
collection_name="my_collection",
property_keys=[
"collection.ttl.seconds"
]
)
client.dropCollectionProperties(DropCollectionPropertiesReq.builder()
.collectionName("my_collection")
.propertyKeys(Collections.singletonList("collection.ttl.seconds"))
.build());
client.dropCollectionProperties({
collection_name:"my_collection",
properties: ['collection.ttl.seconds'],
});
err = client.DropCollectionProperties(ctx, milvusclient.NewDropCollectionPropertiesOption("my_collection", common.CollectionTTLConfigKey))
if err != nil {
fmt.Println(err.Error())
// handle error
}
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/collections/drop_properties" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"collectionName": "my_collection",
"propertyKeys": [
"collection.ttl.seconds"
]
}'