asticsearch — Покрытие команды CURL для переполнения стека CURL

Я пытаюсь добавить документы в эластичный поисковый индекс с помощью массового API. Мой запрос CURL отлично работает в командной строке, и я преобразовал его в PHP.

Когда я пытаюсь запустить код PHP, ничего не происходит. Ни один документ не добавляется в индекс в упругом поиске, и никаких ошибок не появляется.

CURL Query:

curl -H "Content-Type:application/json" -XPOST "http://localhost:9200/inven/default/_bulk?pretty" --data-binary "@file_name.json"

PHP-запрос:

 $ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://localhost:9200/inven/default/_bulk?pretty');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$post = array(
'file' => '@' .realpath('file_name.json')
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

Я поставил ini_set('max_execution_time', 0); также, в случае, это было время ожидания.
В чем может быть проблема?

0

Решение

Вы не отправляете фактическое содержимое файла, просто его имя файла в виде строки. Попробуй это:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost:9200/inven/default/_bulk?pretty');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1 );

// The line below assumes the file_name.json is located in the same directory
// with this script, if not change the path to the file with the correct one.
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents('file_name.json') );
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

$result = curl_exec($ch);

if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
2

Другие решения

пытаться $post = '@' .realpath('file_name.json')

0

Если вы используете PHP 5.5+, используйте:

$post = [
'file' => curl_file_create('file_name.json')
];

Для получения дополнительной информации проверьте: Исправлена ​​загрузка файлов CURL.

0
По вопросам рекламы [email protected]