是否有可能将新字段更新为现有文档?例如:有一个包含多个字段的文档,例如
ID=99999
Field1:text
Field2:text
Run Code Online (Sandbox Code Playgroud)
此文档已在索引中,现在我想在没有旧数据的情况下向此文档插入新字段:
ID=99999
Field3:text
Run Code Online (Sandbox Code Playgroud)
现在,旧文档将被删除,并将创建一个带有ID的新文档.因此,如果我现在搜索ID 99999,结果将是:
ID=99999
Field3:text
Run Code Online (Sandbox Code Playgroud)
我在Solr Wiki上读过这篇文章
如何更新现有文档的特定字段?
我想更新文档中的特定字段,这可能吗?我只需要为一个特定文档索引一个字段.我是否必须为此索引所有文档?
不,只是一个文件.假设您有一个CMS并且您编辑了一个文档.您只需要使用整个文档的add solr语句(仅限一个字段)重新索引此文档.
在Lucene中更新文档时,操作实际上是删除后跟添加.您将需要>添加完整的文档,因为Lucene中没有这样的"仅更新字段"语义.
那有什么解决方案吗?这个功能是否会在另一个版本中实现(我目前使用的是3.6.0).作为一种解决方法,我考虑编写脚本或应用程序,它将收集现有字段,添加新字段并更新整个文档.但我认为这会受到影响.你还有其他建议吗?
最好的祝福
Fux*_*uxi 10
我有2个答案(或多或少都不好):
我希望这能帮助你解决问题.如果您还有其他问题,请询问
可以在Solr 4中执行此操作.例如,请考虑以下文档
{
"id": "book123",
"name" : "Solr Rocks"
}
Run Code Online (Sandbox Code Playgroud)
为了向文档添加作者字段,字段值将是具有"set"属性和字段值的json对象
$ curl http://localhost:8983/solr/update -H 'Content-type:application/json' -d '
[
{"id" : "book123",
"author" : {"set":"The Community"}
}
]'
Run Code Online (Sandbox Code Playgroud)
你的新文件
$ curl http://localhost:8983/solr/get?id=book123
Run Code Online (Sandbox Code Playgroud)
将会
{
"doc" : {
"id" : "book123",
"name" : "Solr Rocks"
"author": "The Community"
}
}
Run Code Online (Sandbox Code Playgroud)
Set将添加或替换author字段.除了设置,您还可以选择增加(增加)和添加(添加)