【问题标题】:Apache Solr 6.6 replace document instead of updateApache Solr 6.6 替换文档而不是更新
【发布时间】:2018-04-25 17:22:49
【问题描述】:

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

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 或我的代码有什么问题?

【问题讨论】:

    标签: python solr lucene pysolr


    【解决方案1】:

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

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

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

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

    请参阅参考链接以了解有关此Atomic updates 的更多信息

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

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

    group2 的值必须是这样的映射 {'set':'value...'}

    你大概可以参考这个类似的stackoverflow解决方案similar answer

    【讨论】:

    • 重要的是要提到要使用原子更新,所有字段都必须设置为存储,或者对于某些字段类型,至少必须启用 docValues。
    • 你是对的。原子更新链接也涵盖了这一点。
    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多