![](/img/trans.png)
[英]What does Solr (Lucene) do internally when adding a document which exists with exactly the same fields and values?
[英]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 中仍然存在上述文檔,我不想更改它。 我想重新索引它/再次將其添加回 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]
為什么“實際”版本會發生變化,而不是“預期”版本?
我該如何解決這個問題(贊賞示例)?
Solr 在內部使用_version_
字段來管理部分更新和更新日志功能。 重新索引時不應將其包含在文檔中。 只需將其刪除。
如果您需要 Solr 樂觀並發功能,在這種情況下, _version_
必須在請求中指定為更新命令的一部分,而不是在文檔中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.