删除对象
Weaviate 允许通过 ID 或一组条件删除对象。
其他信息
- 要删除对象,您必须提供集合名称以及识别标准(例如对象 ID 或过滤器)。
- 对于 多租户 集合,在删除对象时还需要指定租户名称。有关如何操作,请参阅 管理数据:多租户操作。
集合充当命名空间,因此两个不同的集合之间可能存在重复的 ID。
在 Weaviate v1.14 之前,您可以无需指定集合名称即可操作对象。此方法已被弃用。它将在 Weaviate v2.0.0 中删除。
从 v1.20 开始,您可以拥有 多租户 数据集。当 multi-tenancy 启用时,需要租户名称。
始终包含集合名称,并在启用时包含租户名称。
按 ID 删除对象
要按 ID 删除,请指定集合名称和对象 ID。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
uuid_to_delete = "..." # replace with the id of the object you want to delete
collection = client.collections.use("EphemeralObject")
collection.data.delete_by_id(
uuid_to_delete
)
删除多个对象
要删除与一组条件匹配的对象,请指定集合和 where 过滤器。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
from weaviate.classes.query import Filter
collection = client.collections.use("EphemeralObject")
collection.data.delete_many(
where=Filter.by_property("name").like("EphemeralObject*")
)
其他信息
- 单个查询可以删除的对象数量有一个可配置的 最大限制 (QUERY_MAXIMUM_RESULTS)(默认值为 10,000)。要删除超过限制的对象,请重新运行查询。
ContainsAny / ContainsAll / ContainsNone
使用 ContainsAny / ContainsAll / ContainsNone 过滤器通过一组条件删除对象。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
from weaviate.classes.query import Filter
collection = client.collections.use("EphemeralObject")
collection.data.delete_many(
where=Filter.by_property("name").contains_any(["europe", "asia"])
)
其他信息
此功能是在 Weaviate v1.21 中添加的。
按 ID 删除多个对象
要通过其 ID 值删除多个对象,请使用带有 id 为基础标准的过滤器(例如 ContainsAny)。
限制
使用单个查询可以删除的对象数量有一个上限 (QUERY_MAXIMUM_RESULTS)。这可以防止意外的内存激增和容易出现客户端超时或网络中断的长时间运行的请求。
对象将按照 UUID 的顺序删除,就像它们将被提取的顺序一样。要删除超过限制的对象,请多次运行相同的查询,直到不再匹配任何对象为止。
默认的 QUERY_MAXIMUM_RESULTS 值为 10,000。这可能是可配置的,例如在 环境变量 中。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
from weaviate.classes.query import Filter
collection = client.collections.use("EphemeralObject")
response = collection.query.fetch_objects(limit=3) # Fetch 3 object IDs
ids = [o.uuid for o in response.objects] # These can be lists of strings, or `UUID` objects
collection.data.delete_many(
where=Filter.by_id().contains_any(ids) # Delete the 3 objects
)
删除所有对象
对象必须属于 Weaviate 中的一个集合。因此,删除集合 将删除其中的所有对象。
删除具有生存时间 (TTL) 的对象
您可以使用生存时间 (TTL) 设置在集合级别配置在指定时间段后自动删除对象。请阅读如何 设置 它或了解更多 关于它 的信息。
可选参数
- 您可以使用
dryRun来检查将删除多少对象,而无需实际执行删除操作。 - 将
output设置为'verbose'以查看更多详细信息(ID 和删除状态),了解每次删除操作。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
from weaviate.classes.query import Filter
collection = client.collections.use("EphemeralObject")
result = collection.data.delete_many(
where=Filter.by_property("name").like("EphemeralObject*"),
dry_run=True,
verbose=True
)
print(result)
示例响应
它应该产生如下响应
{
"dryRun": true,
"match": {
"class": "EphemeralObject",
"where": {
"operands": null,
"operator": "Like",
"path": [
"name"
],
"valueText": "EphemeralObject*"
}
},
"output": "verbose",
"results": {
"failed": 0,
"limit": 10000,
"matches": 5,
"objects": [
{
"id": "208cf21f-f824-40f1-95cb-f923bc840ca6",
"status": "DRYRUN"
},
{
"id": "8b2dddd4-2dc7-422c-885d-f9d5ff4e80c8",
"status": "DRYRUN"
},
{
"id": "49b3b2b4-3a77-48cd-8e39-27e83c811fcc",
"status": "DRYRUN"
},
{
"id": "847b31d0-dab4-4c1c-8cd3-af07c9d3dc2c",
"status": "DRYRUN"
},
{
"id": "147d9cea-5f9c-40c1-884a-f99bc8e9bf06",
"status": "DRYRUN"
}
],
"successful": 0
}
}
相关页面
问题和反馈
如果您有任何问题或反馈,请在 用户论坛 中告诉我们。
