我一直試圖做solr中的UPSERT(插入或更新,如果已經存在)的等價物。我只知道什麼不起作用,我讀過的solr/lucene文檔沒有幫助。這是我曾嘗試:在一個請求,並要求SOLR可以執行UPSERT嗎?
curl 'localhost:8983/solr/update?commit=true' -H 'Content-type:application/json' -d '[{"id":"1","name":{"set":"steve"}}]'
{"responseHeader":{"status":409,"QTime":2},"error":{"msg":"Document not found for update. id=1","code":409}}
我做的最多50個更新可能包含獨家字段(title_en和title_es例如)相同的ID。如果有一種查詢ID列表是否存在的方法,我可以拆分數據並執行單獨的插入和更新命令......這將是一個可接受的替代方案,但是是否已有一個處理程序來執行此操作?在這一點上,我想避免在室內做任何事情。
謝謝。
但是如果文檔不存在,你會得到:「找不到更新的文檔」,這與upsert的行爲不同 – Bemis 2013-02-15 07:00:22
我認爲它是..請檢查http://lucene.472066.n3.nabble。 COM /更新的文檔,td3994401.html – Jayendra 2013-02-15 10:48:29
從螺紋: 「 >>另一個想法:我們可以切換可能創造 - 如果 - 不存在的,以 >>默認情況下,用現有的樂觀併發機制, >>指定文檔應該存在 >>因此,如果文檔應該存在,指定_version_ = 1並且_version_ = 0 >>(如果您不在意,請使用默認值) 我剛剛做了這個改變。 「 任何想法這個變化是什麼以及如何使用它? – Bemis 2013-02-20 03:16:56