通过URL进行solr原子更新

时间:2016-07-13 13:42:20

标签: solr

如何使用基本http请求对solr表执行更新?我可以使用以下内容提取数据:

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

但是如果我想更改系统中已有的记录呢?我找到了一些文档here,声称我应该能够做一些与此相当的事情:

update solr set name = 'brian' where id = 6686,但我无法在网址上找到任何可以执行此操作的内容......例如:

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

我使用solr 5.4.1。

2 个答案:

答案 0 :(得分:1)

我写了一个解决这个问题的脚本。我希望这对未来的其他人有用......

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 id }是20522

答案 1 :(得分:0)

Solr能够执行自我的5.1版本以来的原子更新。可以找到涵盖http和SolrJ更新的完整示例here。此外,请注意:

  1. 示例中名为id的字段必须替换为您的唯一键(检查schema.xml)和
  2. 如果您正在寻找更具体的用例,请挖掘更多stackoverflow问题,因为有许多相关问题。