エンティティの削除
不要になったエンティティを、フィルタリング条件または主キーによって削除できます。
フィルタリング条件によるエンティティの削除
複数のエンティティがいくつかの属性を共有しており、それらを一括で削除する場合は、フィルタ式を使用できます。以下のコード例では、in 演算子を使用して、color フィールドが red と purple の値に設定されているすべてのエンティティを一括削除しています。要件に応じたフィルタ式を構築するために、他の演算子を使用することもできます。フィルタ式の詳細については、Filtering Explained を参照してください。
- Python
- Java
- Go
- Rust
- C++
- NodeJS
- CSharp
- cURL
python
from pymilvus import MilvusClient
client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)
res = client.delete(
collection_name="quick_setup",
filter="color in ['red_7025', 'purple_4976']"
)
print(res)
# Output
# {'delete_count': 2}
java
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.vector.request.DeleteReq;
import io.milvus.v2.service.vector.response.DeleteResp;
MilvusClientV2 client = new MilvusClientV2(ConnectConfig.builder()
.uri("YOUR_CLUSTER_ENDPOINT")
.token("YOUR_CLUSTER_TOKEN")
.build());
DeleteResp deleteResp = client.delete(DeleteReq.builder()
.collectionName("quick_setup")
.filter("color in ['red_7025', 'purple_4976']")
.build());
go
import (
"context"
"fmt"
"github.com/milvus-io/milvus/client/v3/milvusclient"
)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
milvusAddr := "YOUR_CLUSTER_ENDPOINT"
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
Address: milvusAddr,
})
if err != nil {
fmt.Println(err.Error())
// handle error
}
defer client.Close(ctx)
_, err = client.Delete(ctx, milvusclient.NewDeleteOption("quick_setup").WithExpr("color in ['red_7025', 'purple_4976']"))
if err != nil {
fmt.Println(err.Error())
// handle err
}
rust
use milvus::v2::prelude::*;
let config = ConnectConfig::new().uri("YOUR_CLUSTER_ENDPOINT").token("YOUR_CLUSTER_TOKEN");
let client = ClientV2::new(&config).await?;
let request = DeleteRequest::builder()
.collection_name("quick_setup")
.filter("color in ['red_7025', 'purple_4976']")
.build()?;
let response = client.delete(request).await?;
println!("{:?}", response.delete_count());
c++
#include "milvus/MilvusClientV2.h"
auto client = milvus::MilvusClientV2::Create();
milvus::ConnectParam connect_param{"YOUR_CLUSTER_ENDPOINT", "YOUR_CLUSTER_TOKEN"};
auto status = client->Connect(connect_param);
if (!status.IsOk()) {
std::cout << status.Message() << std::endl;
}
milvus::DeleteResponse response;
status = client->Delete(milvus::DeleteRequest()
.WithCollectionName("quick_setup")
.WithFilter("color in ['red_7025', 'purple_4976']"),
response);
if (!status.IsOk()) {
std::cout << status.Message() << std::endl;
}
javascript
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
const address = "YOUR_CLUSTER_ENDPOINT";
const token = "YOUR_CLUSTER_TOKEN";
const client = new MilvusClient({address, token});
// 7. Delete entities
res = await client.delete({
collection_name: "quick_setup",
filter: "color in ['red_7025', 'purple_4976']"
})
console.log(res.delete_cnt)
// Output
//
// 2
//
csharp
using Milvus.Client.V2;
using Milvus.Client.V2.Requests.Dml;
using Milvus.Client.V2.Responses.Dml;
var config = new ConnectConfig
{
Uri = "YOUR_CLUSTER_ENDPOINT",
Username = "root",
Password = "Milvus"
};
using var client = new MilvusClientV2(config);
await client.ConnectAsync();
MutationResp res = await client.DeleteAsync(new DeleteReq
{
CollectionName = "quick_setup",
Expression = "color in [\"red_7025\", \"purple_4976\"]"
});
Console.WriteLine(res.DeleteCount);
bash
export CLUSTER_ENDPOINT="YOUR_CLUSTER_ENDPOINT"
export TOKEN="YOUR_CLUSTER_TOKEN"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/entities/delete" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"collectionName": "quick_setup",
"filter": "color in [\"red_7025\", \"purple_4976\"]"
}'
主キーによるエンティティの削除
ほとんどの場合、主キーはエンティティを一意に識別します。削除リクエストで主キーを設定することで、エンティティを削除できます。以下のコード例は、主キー 18 と 19 を持つ 2 つのエンティティを削除する方法を示しています。
- Python
- Java
- Go
- Rust
- C++
- NodeJS
- CSharp
- cURL
python
res = client.delete(
collection_name="quick_setup",
ids=[18, 19]
)
print(res)
# Output
# {'delete_count': 2}
java
import io.milvus.v2.service.vector.request.DeleteReq;
import io.milvus.v2.service.vector.response.DeleteResp;
import java.util.Arrays;
DeleteResp deleteResp = client.delete(DeleteReq.builder()
.collectionName("quick_setup")
.ids(Arrays.asList(18, 19))
.build());
go
import (
"fmt"
"github.com/milvus-io/milvus/client/v3/milvusclient"
)
_, err = client.Delete(ctx, milvusclient.NewDeleteOption("quick_setup").
WithInt64IDs("id", []int64{18, 19}))
if err != nil {
fmt.Println(err.Error())
// handle err
}
rust
use milvus::v2::prelude::*;
let request = DeleteRequest::builder()
.collection_name("quick_setup")
.ids(Ids::Int64(vec![18, 19]))
.build()?;
let response = client.delete(request).await?;
println!("{:?}", response.delete_count());
c++
milvus::DeleteResponse response;
auto status = client->Delete(milvus::DeleteRequest()
.WithCollectionName("quick_setup")
.WithIDs(std::vector<int64_t>{18, 19}),
response);
if (!status.IsOk()) {
std::cout << status.Message() << std::endl;
}
javascript
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
res = await client.delete({
collection_name: "quick_setup",
ids: [18, 19]
})
console.log(res.delete_cnt)
// Output
//
// 2
//
csharp
using Milvus.Client.V2.Requests.Dml;
using Milvus.Client.V2.Responses.Dml;
MutationResp res = await client.DeleteAsync(new DeleteReq
{
CollectionName = "quick_setup",
Ids = [18, 19]
});
Console.WriteLine(res.DeleteCount);
bash
export CLUSTER_ENDPOINT="YOUR_CLUSTER_ENDPOINT"
export TOKEN="YOUR_CLUSTER_TOKEN"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/entities/delete" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"collectionName": "quick_setup",
"filter": "id in [18, 19]"
}'
## {"code":0,"cost":0,"data":{}}
パーティションからのエンティティの削除
特定のパーティションに保存されているエンティティを削除することもできます。以下のコードスニペットでは、コレクション内に PartitionA という名前のパーティションがあることを前提としています。
- Python
- Java
- Go
- Rust
- C++
- NodeJS
- CSharp
- cURL
python
res = client.delete(
collection_name="quick_setup",
ids=[18, 19],
partition_name="partitionA"
)
print(res)
# Output
# {'delete_count': 2}
java
import io.milvus.v2.service.vector.request.DeleteReq;
import io.milvus.v2.service.vector.response.DeleteResp;
import java.util.Arrays;
DeleteResp deleteResp = client.delete(DeleteReq.builder()
.collectionName("quick_setup")
.ids(Arrays.asList(18, 19))
.partitionName("partitionA")
.build());
go
import (
"fmt"
"github.com/milvus-io/milvus/client/v3/milvusclient"
)
_, err = client.Delete(ctx, milvusclient.NewDeleteOption("quick_setup").
WithInt64IDs("id", []int64{18, 19}).
WithPartition("partitionA"))
if err != nil {
fmt.Println(err.Error())
// handle err
}
rust
use milvus::v2::prelude::*;
let request = DeleteRequest::builder()
.collection_name("quick_setup")
.ids(Ids::Int64(vec![18, 19]))
.partition_name("partitionA")
.build()?;
let response = client.delete(request).await?;
println!("{:?}", response.delete_count());
c++
milvus::DeleteResponse response;
auto status = client->Delete(milvus::DeleteRequest()
.WithCollectionName("quick_setup")
.WithPartitionName("partitionA")
.WithIDs(std::vector<int64_t>{18, 19}),
response);
if (!status.IsOk()) {
std::cout << status.Message() << std::endl;
}
javascript
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
res = await client.delete({
collection_name: "quick_setup",
ids: [18, 19],
partition_name: "partitionA"
})
console.log(res.delete_cnt)
// Output
//
// 2
//
csharp
using Milvus.Client.V2.Requests.Dml;
using Milvus.Client.V2.Responses.Dml;
MutationResp res = await client.DeleteAsync(new DeleteReq
{
CollectionName = "quick_setup",
Ids = [18, 19],
PartitionName = "partitionA"
});
Console.WriteLine(res.DeleteCount);
bash
export CLUSTER_ENDPOINT="YOUR_CLUSTER_ENDPOINT"
export TOKEN="YOUR_CLUSTER_TOKEN"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/entities/delete" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"collectionName": "quick_setup",
"partitionName": "partitionA",
"filter": "id in [18, 19]"
}'
# {
# "code": 0,
# "cost": 0,
# "data": {}
# }