Elasticsearch批量数据插入 - JsonParseException [意外字符 - 使用PHP

时间:2015-10-13 16:18:32

标签: php json curl elasticsearch bulk

使用PHP curl方法索引批量数据时,我将异常作为"error":"JsonParseException[Unexpected character (':' (code 58)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: [B@14abb68; line: 1, column: 18]]","status":500}

请在下面找到我正在使用的代码,并告诉我这里可能出现的问题。

<?php
 $ch = curl_init();
$method = "POST";
$url = "http://192.168.1.204/myindex/test/_bulk";


$qry = '
{"index":{"_index": "myindex","_type":"test"}}
{
    "product_id": 1,
    "title": "mobile"
}
{"index":{"_index": "myindex","_type":"test"}}
{
    "product_id": 2,
    "title": "laptop",
}
';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PORT, 9200);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($method));
curl_setopt($ch, CURLOPT_POSTFIELDS, $qry);

$result = curl_exec($ch);
curl_close($ch);
  echo $result;

?>

1 个答案:

答案 0 :(得分:1)

您没有使用正确的格式(第二个元素还有一个额外的逗号)。 它应该是:

action_and_meta_data\n
optional_source\n
action_and_meta_data\n
optional_source\n
....
action_and_meta_data\n
optional_source\n

摘自elasticsearch - bulk

的文件

因此,您应该使用以下格式添加数据:

{"index":{"_index": "myindex","_type":"test"}}
{"product_id": 1,"title": "mobile"}
{"index":{"_index": "myindex","_type":"test"}}
{"product_id": 2,"title": "laptop"}