我正在努力使用Bulk API。我在每个批量请求中发送100个请求(索引,更新)。它给出了我对每个请求的状态的回复。假设我的第97个请求失败了,我必须循环找到特定的错误文档。我认为它不是优化方式。如果我发送更多的批量请求,它会使我的进程变慢。有什么办法我只会得到失败的文件或失败/成功文件的数量作为回应?我正在使用php-elasticsearch
SDK。
答案 0 :(得分:0)
对于失败/成功计数,可以使用以下方法: 在批量操作之前获取索引计数
如果没有索引,您可以忽略
$parameters = ["index" => "your_index","type" => "your_type"];
$response = $esclient->count($params);
$old_count = $response['count'];
在批量发送的参数中使用具有真实值的刷新键
此操作在执行批量操作后刷新此索引
$params['refresh'] = true;
$params['body'] = ...;
$total_count = count($params['body']) / 2; //get the total request count
$esclient->bulk($params);
之后,您可以使用count方法找出存在多少索引
$response = $esclient->count($parameters);
$new_count = $response['count'];
获得总成功
$total_success = $new_count - $old_count;
获取失败总数
$total_fail = $total_count- $total_success;