Solr:仅更新现有文档

时间:2014-07-03 17:48:43

标签: solr

我正在尝试仅更新Solr 4中的现有文档。

假设我有这些文件:

  • {id:1,名称:“产品1”,价格:10}
  • {id:2,名称:“产品2”,价格:15}
  • {id:3,名称:“产品3”,价格:20}

然后我想添加一个字段,但仅适用于现有文档。所以我将这些文件发送给Solr:

  • {id:2,special:true}
  • {id:3,special:true}
  • {id:7,special:true}

我想要的索引文档是:

  • {id:1,名称:“产品1”,价格:10}
  • {id:2,name:“product 2”,price:15,special:true}
  • {id:3,名称:“产品3”,价格:20,特殊:true}

为了实现这个目的,我正在使用_version_字段(对于原子更新,已经正常工作,顺便说一下),所以我的更新文档如下所示:

  • {id:2,special:true,_ version_:1}
  • {id:3,special:true,_version_:1}
  • {id:7,special:true,_ version_:1}

使用它我希望只更新ID 2和3,但我从Solr获得409状态代码并且没有任何文档得到更新,因为我在添加所有文档后提交了索引。

如果我使用版本 = 0,那么我会得到类似的结果:

  • {id:1,名称:“产品1”,价格:10}
  • {id:2,name:“product 2”,price:15,special:true}
  • {id:3,名称:“产品3”,价格:20,特殊:true}
  • {id:7,special:true,_ version_:1}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您使用版本:1的解决方案是正确的。但请注意,如果您批量发送原子更新,则任何失败都将导致批处理中的后续更新被丢弃。

在您给出的示例中,id:7将导致409状态代码(版本冲突),但应更新id为2且id为3的文档。