curl SOLR_URL/update -d \'
[
{"id" : "1",
"ONLINE" : {"set":"1"}
}
]'
我正在使用 solr6.3。上面的命令可以正常工作,因为它将 id=1 的在线标志更新为 1。但问题是如果记录不存在,那么它会添加一个值,即 id=1 和 online=1,这是不需要的。
所以问题是,solr 是否有可能仅在 solr 中存在记录时才更新值。
也许有点晚了,但您可以创建一个必填字段。如果您尝试插入没有此必填字段的文档,更新查询将失败。也许不是最优雅的方式,但至少是一种解决方案。
要确保文档存在以供更新,您只需将_version_
具有值的字段添加1
到文档中即可。在这种情况下,不评估版本,而仅解释文档必须存在。
[
{"id" : "146546456",
"ONLINE" : {"set": "1"},
"_version_" : 1
}
]
错误信息也有相应的意义:
找不到要更新的文档。编号=146546456
但是,如果只有一个文档不存在,则批量更新永远不会更新文档。