当 reindexing/adding 相同的文档返回到 Solr 核心时,如何防止版本冲突?
How do I prevent a version conflict when reindexing/adding the same document back into the Solr core?
我有一个包含 60k 文档的 Solr 核心。我已经更新了 schema.xml 中的字段类型,我不想删除 Solr 核心以重新编制索引。我正在尝试使用 Solr 搜索检索文档,然后尝试将具有相同 ID 的相同文档添加回 Solr。这样做时,我遇到了版本冲突。
示例:
我使用 Pysolr 搜索请求检索一个文档。文档如下所示:
doc = {
"type":"person",
"lastname":"Johnson",
"firstname":"Bobby",
"id":"person_abcd",
"_version_":1691404871556661248}
上述文档在Solr中仍然存在,我不想更改它。我想重新索引 it/add 它再次回到 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]
为什么 'actual' 版本发生变化而不是保持 'expected' 版本?
我该如何解决这个问题(感谢示例)?
_version_
字段由 Solr 在内部使用,用于管理部分更新和更新日志功能。重建索引时不应将其包含在文档中。删除它即可。
如果您需要 Solr Optimistic Concurrency 功能,在这种情况下,_version_
必须在请求中指定为更新命令的一部分,而不是在文档中指定。
我有一个包含 60k 文档的 Solr 核心。我已经更新了 schema.xml 中的字段类型,我不想删除 Solr 核心以重新编制索引。我正在尝试使用 Solr 搜索检索文档,然后尝试将具有相同 ID 的相同文档添加回 Solr。这样做时,我遇到了版本冲突。
示例: 我使用 Pysolr 搜索请求检索一个文档。文档如下所示:
doc = {
"type":"person",
"lastname":"Johnson",
"firstname":"Bobby",
"id":"person_abcd",
"_version_":1691404871556661248}
上述文档在Solr中仍然存在,我不想更改它。我想重新索引 it/add 它再次回到 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]
为什么 'actual' 版本发生变化而不是保持 'expected' 版本?
我该如何解决这个问题(感谢示例)?
_version_
字段由 Solr 在内部使用,用于管理部分更新和更新日志功能。重建索引时不应将其包含在文档中。删除它即可。
如果您需要 Solr Optimistic Concurrency 功能,在这种情况下,_version_
必须在请求中指定为更新命令的一部分,而不是在文档中指定。