php使用Elasticsearch-api之delete_by_query操作,
在执行delete_by_query期间,依次执行多个搜索请求,以便找到要删除的所有匹配文档。每次发现一批文件时,执行相应的批量请求以删除所有这些文档。如果搜索或批量请求被拒绝,则delete_by_query 依赖于默认策略来重试拒绝的请求(最多10次,以指数返回)。达到最大重试次数限制将导致delete_by_query 中止,所有故障都将在failures响应中返回。已经执行的删除仍然坚持。换句话说,进程没有回滚,只会中止。虽然第一个故障导致中止,但是由该失败的批量请求返回的所有故障都在failures 元素中返回;根据条件删除文档(delete_by_query)的语句例子
注意使用deleteByQuery函数时必须要安装插件 :bin/plugin install delete-by-query
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'bool' => [
'must' => [
'range' => [
'age' => [
'gt' => '50',
'lt' => '70'
]
]
]
]
]
]
];
$client = Elasticsearch\ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
$res = $client->deleteByQuery($params);
执行后的响应体例子如下
{
"took" : 639, #从整个操作的开始到结束的毫秒数。
"deleted": 0, #删除的数目
"batches": 1, #通过查询删除的滚动响应数量。
"version_conflicts": 2, #由查询命令删除的版本冲突数。
"retries": 0, #查询删除的重试次数是响应于完整队列
"throttled_millis": 0, #请求睡眠符合的毫秒数requests_per_second。
"failures" : [ ] #所有索引失败的数组。如果这是非空的,那么请求因为这些失败而中止。
}
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。