我一直试图做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