簡體   English   中英

將同一文檔重新索引/添加回 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 中仍然存在上述文檔,我不想更改它。 我想重新索引它/再次將其添加回 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM