关闭此链接here,我尝试使用PHP和cURL更新solr实例中的记录,但我对命令行cURL有点不熟悉所以我'我不确定我做错了什么。
$ch = curl_init("http://localhost:8983/solr/database/update");
$data = array(
"id" => "6686",
"name" => array(
"set" => "Brian")
);
$data_string = json_encode($data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
echo curl_exec($ch);
以下是我遇到的错误 - 我确定" id"是我的solr实例中的一个字段:
{"responseHeader":{"status":400,"QTime":2},"error":{"msg":"Unknown command 'id' at [5]","code":400}}
答案 0 :(得分:0)
您可以尝试使用此代码获取已发送数据的值,以便检查是对还是错。
echo '<pre>'.print_r(json_decode(file_get_contents("php://input")),1).'</pre>';
并使用此代码替换
$data = array(
"id" => "6686",
"name" => array(
"set" => "Brian")
);
$data_string = json_encode($data);
$ch = curl_init('http://localhost:8983/solr/database/update');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
答案 1 :(得分:0)
我原来问题的基本思路是正确的 - 只是一些语法问题。下面的代码用于使用PHP和cURL更新solr记录。我必须向array(
添加额外的$data_string
图层,并将?commit=true
添加到网址
$ch = curl_init("http://localhost:8983/solr/database/update?commit=true");
$data = array(
"id" => "6686",
"name" => array(
"set" => "Brian")
);
$data_string = json_encode(array($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
echo curl_exec($ch);
你认为会有一些类型的文档...但我猜不是。我希望这可以帮助那些希望将来做同样非常简单的事情的人......