按查询删除
1.0 版引入
您可以在删除请求中包含一个查询,以便 OpenSearch 删除所有与该查询匹配的文档。
端点
POST <index>/_delete_by_query
路径参数
参数 | 类型 | 描述 |
---|---|---|
<索引> | 字符串 | 要删除的数据流、索引或别名的名称或列表。支持通配符。如果留空,OpenSearch 将搜索所有索引。 |
查询参数
所有参数都是可选的。
参数 | 类型 | 描述 |
---|---|---|
allow_no_indices | 布尔型 | 是否忽略不匹配任何索引的通配符。默认值为 true 。 |
分析器 | 字符串 | 查询字符串中要使用的分析器。 |
analyze_wildcard | 布尔型 | 指定是否分析通配符和前缀查询。默认值为 false 。 |
conflicts | 字符串 | 指示 OpenSearch 在按查询删除操作遇到版本冲突时应如何处理。有效选项为 abort (中止)和 proceed (继续)。默认值为 abort 。 |
default_operator | 字符串 | 指示字符串查询的默认运算符应为 AND 还是 OR 。默认值为 OR 。 |
df | 字符串 | 如果查询字符串中未提供字段前缀,则使用的默认字段。 |
expand_wildcards | 字符串 | 指定通配符表达式可以匹配的索引类型。支持逗号分隔值。有效值为 all (匹配任何索引)、open (匹配开放的非隐藏索引)、closed (匹配关闭的非隐藏索引)、hidden (匹配隐藏索引)和 none (拒绝通配符表达式)。默认值为 open 。 |
from | 整数 | 开始搜索的起始索引。默认值为 0。 |
ignore_unavailable | 布尔型 | 指定是否在响应中包含缺失或关闭的索引,并在搜索请求期间忽略不可用的分片。默认值为 false 。 |
lenient | 布尔型 | 指定 OpenSearch 是否应接受查询存在格式错误(例如,查询文本字段时使用整数)的请求。默认值为 false 。 |
max_docs | 整数 | 按查询删除操作最多应处理多少文档。默认值为所有文档。 |
preference | 字符串 | 指定 OpenSearch 应在哪个分片或节点上执行按查询删除操作。 |
q | 字符串 | Lucene 查询字符串的查询。 |
request_cache | 布尔型 | 指定 OpenSearch 是否应使用请求缓存。默认值为索引设置中是否启用它。 |
refresh | 布尔型 | 如果为 true ,OpenSearch 会刷新分片,使按查询删除操作对搜索结果可用。有效值为 true 和 false 。默认值为 false 。 |
requests_per_second | 整数 | 指定请求的节流,以每秒子请求数表示。默认值为 -1,表示不节流。 |
路由 | 字符串 | 用于将操作路由到特定分片的值。 |
scroll | 时间 | 搜索上下文应保持打开的时间量。 |
scroll_size | 整数 | 操作的滚动请求大小。默认值为 1000。 |
search_type | 字符串 | OpenSearch 是否应使用全局词条和文档频率来计算相关性分数。有效选项为 query_then_fetch 和 dfs_query_then_fetch 。query_then_fetch 使用分片的本地词条和文档频率对文档进行评分。它通常更快,但准确性较低。dfs_query_then_fetch 使用所有分片的全局词条和文档频率对文档进行评分。它通常较慢,但准确性较高。默认值为 query_then_fetch 。 |
search_timeout | 时间 | 等待多长时间 OpenSearch 才认为请求超时。默认值为无超时。 |
slices | 字符串或整数 | 将操作切分成多少个切片以加快处理速度。指定一个整数来设置将操作分成多少个切片,或者使用 auto ,它会告诉 OpenSearch 自行决定分成多少个切片。如果索引中有很多分片,请设置一个较低的数字以提高效率。默认值为 1,表示任务不应被划分。 |
sort(排序) | 字符串 | 要排序的 |
_source | 字符串 | 指定是否在响应中包含 _source 字段。 |
_source_excludes | 字符串 | 要从响应中排除的源字段的逗号分隔列表。 |
_source_includes | 字符串 | 要包含在响应中的源字段的逗号分隔列表。 |
stats | 字符串 | 与请求关联的值,用于额外日志记录。 |
terminate_after | 整数 | OpenSearch 在终止请求前应处理的最大匹配文档数(命中数)。 |
timeout | 时间 | 操作应等待活动分片响应的时间。默认值为 1m 。 |
version | 布尔型 | 是否将文档版本作为匹配项包含在内。 |
wait_for_active_shards | 字符串 | 在 OpenSearch 执行操作之前必须处于活动状态的分片数量。有效值为 all 或索引中分片总数以内的任何整数。默认值为 1,即主分片。 |
wait_for_completion | 布尔型 | 将此参数设置为 false 表示 OpenSearch 不应等待完成,而是异步执行此请求。异步请求在后台运行,您可以使用 任务 (Tasks) API 来监控进度。 |
请求正文字段
要搜索索引中的特定文档,您必须在请求正文中包含一个 查询,OpenSearch 将使用该查询来匹配文档。如果您不使用查询,OpenSearch 会将您的删除请求视为简单的 删除文档操作。
{
"query": {
"match": {
"movie-length": "124"
}
}
}
请求示例
POST sample-index1/_delete_by_query
{
"query": {
"match": {
"movie-length": "124"
}
}
}
示例响应
{
"took": 143,
"timed_out": false,
"total": 1,
"deleted": 1,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1.0,
"throttled_until_millis": 0,
"failures": []
}
响应正文字段
字段 | 描述 |
---|---|
took | OpenSearch 完成操作所需的时间(毫秒)。 |
timed_out | 操作期间是否有任何删除请求超时。 |
total | 已处理的文档总数。 |
deleted | 已删除的文档总数。 |
batches | 请求处理的滚动响应数量。 |
version_conflicts | 请求遇到的冲突数量。 |
noops | 操作期间 OpenSearch 忽略了多少删除请求。此字段始终返回 0。 |
retries | 批量和搜索重试请求的数量。 |
throttled_millis | 请求期间节流的毫秒数。 |
requests_per_second | 操作期间每秒执行的请求数量。 |
throttled_until_millis | OpenSearch 执行下一个节流请求前的时间量。在按查询删除请求中始终等于 0。 |
failures | 请求期间发生的任何失败。 |