У меня сейчас есть демо-счет. Я пытаюсь создать POC, используя SwifType для моего работодателя. У нас очень большая база данных, которая indexec каждые 1 час и создает файл JSON. Я думал, что интеграция с Elastic будет очень легкой, учитывая, что отправка строки при ее генерации - это только вопрос. Я использовал PHP Curl и получил соединение с API. Код отправляет часть данных, а затем выходит из строя с ошибкой «Превышен предел скорости».
Как мне обойти эту ошибку и получить полный индекс JSON?
Мой код выглядиткак сейчас:
// SENDING DATA TO ELASTIC SEARCH
$arr = array_change_key_case($arr, CASE_LOWER); // Keys to lower case
$arrlist = array_chunk($arr,100); // Split to chunks of 100
foreach($arrlist as $key=>$arr){
$json = json_encode($arr); // Making the JSON string from the array
$ch = curl_init('https://host-***.api.swiftype.com/api/as/v1/engines/***/documents');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Bearer private-***';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
echo $result."<hr>";
}
Кроме того, учитывая, что этот код будет индексироваться каждый час, если я буду отправлять одни и те же данные снова и снова, ОБНОВИТ ли он предыдущий или дублирует его? Если так, как я могу справиться с этим?