solr php curl update命令

时间:2016-07-13 15:17:20

标签: php curl solr

关闭此链接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}}

2 个答案:

答案 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);

你认为会有一些类型的文档...但我猜不是。我希望这可以帮助那些希望将来做同样非常简单的事情的人......