2016-07-13 41 views
0

如何使用基本http请求执行对solr表的更新?我可以使用这样的东西拉数据:通过URL进行solr原子更新

http://localhost:8983/solr/database/select?q=id:6686 

但是如果我想更改已经在系统中的记录呢?我已经发现了一些文件here,声称我应该可以做一些事情,这相当于这个:

update solr set name = 'brian' where id = 6686,但我不能找到一个URL什么叫做到这一点...是这样的:

http://localhost:8983/solr/database/update?q=id:6686&set=name:brian 

我正在使用solr 5.4.1。

回答

0

我写了一个脚本来解决这个问题。我希望这是在未来别人有用......

function solr_update($id, $value) { 
    $ch = curl_init("http://localhost:8983/solr/core/update?commit=true"); 

    $data = array(
      "id" => $id, 
      "user_name" => array(
       "set" => $value), 
      ); 

    $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); 
    curl_exec($ch); 

} 


solr_update($id, $value); 

在这个例子中,如果设置了$id = 20522$value = "Brian",该solr_update函数将user_name字段设置为Brian其中id20522

0

Solr能够执行原子更新,因为它的5.1版本相信。涵盖http和SolrJ更新的完整示例可以在here找到。此外,请注意:

  1. 命名为例子ID的字段,必须用你的独特密钥(检查你的schema.xml)和
  2. 被替换如果你正在寻找一些更具体的使用情况,因为有很多相关的东西,挖掘更多的stackoverflow问题。
+0

我已经浏览了我可以在网上找到的每个教程,以及每个我可以找到的stackoverflow问题,而且我找不到任何有关这样做的信息。 yonik给出的例子使用cURL(似乎是)命令行,这对我不起作用。我想知道是否有类似使用'select'语句进行​​更新的方法。 –

+0

任何想法如何使用PHP和cURL来做到这一点? –