Apache Solr 6.6替换文档而不是更新

时间:2017-11-13 05:02:08

标签: python solr lucene pysolr

我已经为测试设置配置了solr 6.6.1。索引几个文档后,我必须更新几个字段。我正在使用solr的python客户端。要更新,以下是我的代码段

import solr

def update_solr_index(_id, _value):
    print solr_conn2.add( id = _id, group2 = _value)

core_ulr = "http://localhost:8983/solr/use"
solr_conn2 = solr.SolrConnection(core_ulr)
update_solr_index(doc_id, field_value)

执行(和提交)后,所有其他字段将从所有文档中删除,只剩下两个字段,即doc_id和group2。这个API或我的代码中有什么问题?

1 个答案:

答案 0 :(得分:2)

API中没有问题。您要求solr添加一个文档,其中包含您的集合中已存在的ID字段。 solr中会发生以下操作。

  • 删除具有相同ID的现有文档

  • 添加仅包含该API调用中指定的字段的新文档

您正在寻找的解决方案是文档的部分更新

请参阅参考链接,了解有关此Atomic updates

的更多信息

您需要为要在文档中更新的字段发送地图对象。

solr_conn2.add(id=_id, group2=*****)

group2的值必须是这样的地图{'set':'value ...'}

您可以参考类似的stackoverflow解决方案similar answer