0

我有一个包含 60k 文档的 Solr 核心。我已经更新了 schema.xml 中的字段类型,并且我不想删除 Solr 核心以进行重新索引。我正在尝试使用 Solr 搜索检索文档,然后尝试将具有相同 ID 的相同文档添加回 Solr。在这样做时,我遇到了版本冲突。

示例: 我使用 Pysolr 搜索请求检索一个文档。该文档如下所示:

doc = {
        "type":"person",
        "lastname":"Johnson",
        "firstname":"Bobby",
        "id":"person_abcd",
        "_version_":1691404871556661248}

上面的文档仍然存在于 Solr 中,我不想更改它。我想重新索引它/再次将其添加回 Solr,因为 schema.xml 中的字段类型已更改。

当我做:

import pysolr

core = pysolr.Solr('http://localhost:10000/solr/core', always_commit=True)
core.add(doc)

我收到以下错误:

pysolr.SolrError: Solr responded with an error (HTTP 409): [Reason: version conflict for person_abcd expected=1691404871556661248 actual=1691426574942863360]

为什么“实际”版本会发生变化,而不是“预期”版本?

我该如何解决这个问题(示例表示赞赏)?

4

1 回答 1

1

Solr 在内部使用该_version_字段来管理部分更新和更新日志功能。重新索引时不应将其包含在文档中。只需将其删除。

如果您需要 Solr Optimistic Concurrency功能,在这种情况下,_version_必须在请求中将其指定为更新命令的一部分,而不是在文档中。

于 2021-02-12T10:01:22.923 回答