0
curl SOLR_URL/update -d \'
[
 {"id" : "1",
  "ONLINE" : {"set":"1"}
 }
]'

我正在使用 solr6.3。上面的命令可以正常工作,因为它将 id=1 的在线标志更新为 1。但问题是如果记录不存在,那么它会添加一个值,即 id=1 和 online=1,这是不需要的。

所以问题是,solr 是否有可能仅在 solr 中存在记录时才更新值。

4

2 回答 2

1

也许有点晚了,但您可以创建一个必填字段。如果您尝试插入没有此必填字段的文档,更新查询将失败。也许不是最优雅的方式,但至少是一种解决方案。

于 2017-09-26T18:50:50.287 回答
0

要确保文档存在以供更新,您只需将_version_具有值的字段添加1到文档中即可。在这种情况下,不评估版本,而仅解释文档必须存在。

[
 {"id" : "146546456",
  "ONLINE" : {"set": "1"},
  "_version_" : 1
 }
]

错误信息也有相应的意义:

找不到要更新的文档。编号=146546456

但是,如果只有一个文档不存在,则批量更新永远不会更新文档。

于 2022-02-15T10:25:52.197 回答