欢迎投稿

今日深度:

php使用Elasticsearch-api之delete_by_query操作,

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" : [ ]   #所有索引失败的数组。如果这是非空的,那么请求因为这些失败而中止。
}




www.htsjk.Com true http://www.htsjk.com/Elasticsearch/32366.html NewsArticle php使用Elasticsearch-api之delete_by_query操作, 在执行 delete_by_query 期间,依次执行多个搜索请求,以便找到要删除的所有匹配文档。每次发现一批文件时,执行相应的批量请求以删除所有这...
相关文章
    暂无相关文章
评论暂时关闭