Solr:如何使用唯一ID更新文档

时间:2014-09-13 18:24:14

标签: solr

你能帮忙吗?我必须通过其唯一标识符更新Solr文档。说,我有一个类似的文件:

    {
      "text": "qwe",
      "id": "01a3aa6db06d39e8",
      "_version_": 1471599607983112200
    }

我想更新字段"短语",所以我将以下内容发布到127.0.0.1:8983/solr/update/?commit=true:

    [
      {
        "id" : "01a3aa6db06d39e8",
        "text" : {"set":"qwe. updated"}
      }
    ]

Solr说400 Bad Request并返回以下内容:

    {
      "responseHeader":
        {
          "status":400,"QTime":0},
          "error":{"msg":"Document contains multiple values for uniqueKey field: id=[01a3aa6db06d39e8, 0000000000000000]","code":400}
        }
    }

如何正确更新包含唯一密钥的文档?

1 个答案:

答案 0 :(得分:0)

试试这个。

{"id":"01a3aa6db06d39e8","text":"hello world , this is an update"}

如果你想把文本作为像mongodb这样的多维数组,那就无法在solr中容纳,但是它有办法,有点乱。

如果您正在使用脚本来更新文档,我认为您正在使用循环包括提交和while循环中的实例化,就像PHP上的这个:

while($row    = mysqli_fetch_assoc($result))
{
    $client = new SolrClient($options);

    $doc = new SolrInputDocument();
    $doc->addField('id', $row['id']);       
    $doc->addField('date', '2015-06-01T00:00:0.0Z');
    $doc->addField('name', $row['name']);       
    $updateResponse = $client->addDocument($doc);
}   
$client->commit();