我使用GuzzleHttp通过“_bulk”将数据发送到ElasticSearch索引。这只是一个包含850条记录的小数据集。当我逐个传输数据记录时,我收到了17条记录的错误消息。这对我来说很好,所以我可以修复错误。
但是当我使用_bulk时,我根本没有得到任何错误消息。17个不正确的记录被忽略了,并且在索引中丢失了。我如何在这里得到错误消息?是否有一些选项可以使用?有什么想法吗?
端点为:
以下是我的主要代码部分:
$jsonData = "xxxxx"; // the payload for the request
$elasticUrl = "https://xxxx.xx/xxxxx/_doc/_bulk";
$client = new Client([
"verify" => false, // disable ssl certificate verification
"timeout" => 600, // maximum timeout for requests
"http_errors" => false // disable exceptions
]);
$header = ["Content-Type" => "application/json"];
$result = $client->post($elasticUrl,
[
"headers" => $header,
"body" => $jsonData
]
);
if ($result->getStatusCode() != 200) {
$ret = "Error ".$result->getStatusCode()." with message: ".$result->getReasonPhrase();
}
2条答案
按热度按时间xxb16uws1#
使用HTTP 200时,批量请求始终会成功。
但是,在批量响应中,您应该会看到每个项是否成功的指示。如果您在响应中看到
errors: true
,那么您就知道某些项无法被索引,并查看items
数组,您将发现相应项的错误。aoyhnmkz2#
正如@瓦尔所指出的,使用
$response->getBody()
给出了所需的信息:旁注:在
$data
中,我在将数据发送到ElasticSearch之前将其保存为php数组。