Elasticsearch не удалось разобрать исключение — массовая индексация

Я пытаюсь выполнить массовую загрузку в эластичном поиске и получаю эту ошибку для каждой записи, которую пытаюсь вставить.
Пожалуйста, помогите мне с этим.

{"took":2828,"errors":true,"items":[{"index":{"_index":"abc","_type":"abc","_id":"0","status":400,"error":{"type":"mapper_parsing_exception","reason":"failed to parse","caused_by":{"type":"not_x_content_exception","reason":"Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes"}}}}]}

Это код, который я использую
Я использую 5.3 и водителя эластичного поиска 1.4
<?php require_once "/var/www/ElasticSearch/models/ElasticSearchModels.php"; $params = array(); $ids = array(); for($i=0;$i<10;$i++){ $ids[] = $i; $params[] = array("here"=>"here","temp"=>"temp","pr"=>$i); } $elasticSearch = new ElasticSearch(); $elasticSearch->saveInElasticSearchBulk("products_staging","products_staging",$i‌​ds,$params); ?>

0

Решение

Вы не строите $params массив правильно, он должен выглядеть так:

$params = array();
for($i = 0; $i < 10; $i++){
$params['body'][] = array(
'index' => array(
'_index' => 'products_staging',
'_type' => 'products_staging',
'_id' => $i
)
);
$params['body'][] = array(
'here' => 'here',
'temp' => 'temp',
'pr' => $i
);
}

$elasticSearch = new ElasticSearch();
$elasticSearch->saveInElasticSearchBulk($params);
0

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

Я решил эту проблему, так как я использовал драйвер ElasticSearch PHP 1.4. Синтаксис для массового API совершенно другой.

$params = array();
for($i = 0; $i < 10; $i++){$params['body'][] = array(
'index' => array(
'_index' => 'products_staging',
'_type' => 'products_staging',
'_id' => $i
)
);
$params['body'][] = json_encode(array(
'here' => 'here',
'temp' => 'temp',
'pr' => $i
);)
}

$elasticSearch = new ElasticSearch();
$elasticSearch->saveInElasticSearchBulk($params);
0