【发布时间】:2020-02-14 10:54:02
【问题描述】:
我有如下的 Solr 文档
{
"SKU":"1905/SHIRT DRESS-0",
"DateCreated":["2019-08-18T15:21:04.090Z"],
"DateModified":["2020-01-17T02:31:16.803Z"],
"Name":"TIGRESS COLLECTION - SHIRT DRESS, SIZE 0 (6-8)",
"Price":["249.00 AUD"],
"PriceSale":["99.50 AUD"],
"Size":["SIZE 0 (6-8)"],
"StockLevel":["in stock"],
"SubCategory":["KAFTAN"],
"IsDeleted":[0],
"ProductAddedOn":["2020-02-14T10:38:43.047Z"],
"_version_":1658508251550973952
}
我只想更新此文档中的 1 个字段。
我想更新 IsDeleted = 1,其中 ProductAddedOn 小于今天的日期
如何做到这一点?
另外,我尝试使用以下命令更新名称
curl -X POST -H 'Content-Type: application/json' 'http://10.7.0.106:8983/solr/prashant1/update?_version_:1658508177093689344&versions=true&commit=true' --data-binary ' [{ "SKU" : "1905/SHIRT DRESS-0", "Name" : "update attempt with correct existing version" }]'
但此命令会从文档中删除除名称和 SKU 之外的所有其他字段。
所以我只想更新文档中的 1 个字段,其他字段应保持原样。
【问题讨论】:
-
您是否阅读过 Solr 文档中的 Atomic 更新? lucene.apache.org/solr/guide/8_4/…
-
你不能在 Solr 中做
UPDATE ... WHERE <condition>。您必须检索文档,然后为每个 ID 发布更新。 -
同意@MatsLindh,条件部分这里就不处理了……要单独处理……
-
但是您也许可以使用条件函数查询并实现您想要的。这不会更改索引中的数据,但可以操纵搜索响应。 lucene.apache.org/solr/guide/8_4/…
-
对于可能有用的小型用例,是的。但是必须为每个结果集中的每个文档列出的每个字段评估函数,而不是使用索引 - 这是文档搜索引擎有用的一种:-)