在Bulk API Elasticsearch中获取唯一失败的文档响应

时间:2018-04-20 10:23:33

标签: elasticsearch

我正在努力使用Bulk API。我在每个批量请求中发送100个请求(索引,更新)。它给出了我对每个请求的状态的回复。假设我的第97个请求失败了,我必须循环找到特定的错误文档。我认为它不是优化方式。如果我发送更多的批量请求,它会使我的进程变慢。有什么办法我只会得到失败的文件或失败/成功文件的数量作为回应?我正在使用php-elasticsearch SDK。

1 个答案:

答案 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;