[英]Update a new field to existing document
是否有可能將新字段更新為現有文檔? 例如:有一個包含多個字段的文檔,例如
ID=99999
Field1:text
Field2:text
此文檔已在索引中,現在我想在沒有舊數據的情況下向此文檔插入新字段:
ID=99999
Field3:text
現在,舊文檔將被刪除,並將創建一個帶有ID的新文檔。 因此,如果我現在搜索ID 99999,結果將是:
ID=99999
Field3:text
我在Solr Wiki上讀過這篇文章
如何更新現有文檔的特定字段?
我想更新文檔中的特定字段,這可能嗎? 我只需要為一個特定文檔索引一個字段。 我是否必須為此索引所有文檔?
不,只是一個文件。 假設您有一個CMS並且您編輯了一個文檔。 您只需要使用整個文檔的add solr語句(僅限一個字段)重新索引此文檔。
在Lucene中更新文檔時,操作實際上是刪除后跟添加。 您將需要>添加完整的文檔,因為Lucene中沒有這樣的“僅更新字段”語義。
那有什么解決方案嗎? 這個功能是否會在另一個版本中實現(我目前使用的是3.6.0)。 作為一種解決方法,我考慮編寫腳本或應用程序,它將收集現有字段,添加新字段並更新整個文檔。 但我認為這會受到影響。 你還有其他建議嗎?
最好的祝福
我有2個答案(或多或少都不好):
我希望這能幫助你解決問題。 如果您還有其他問題,請詢問
可以在Solr 4中執行此操作。例如,請考慮以下文檔
{
"id": "book123",
"name" : "Solr Rocks"
}
為了向文檔添加作者字段,字段值將是具有“set”屬性和字段值的json對象
$ curl http://localhost:8983/solr/update -H 'Content-type:application/json' -d '
[
{"id" : "book123",
"author" : {"set":"The Community"}
}
]'
你的新文件
$ curl http://localhost:8983/solr/get?id=book123
將會
{
"doc" : {
"id" : "book123",
"name" : "Solr Rocks"
"author": "The Community"
}
}
Set將添加或替換author字段。 除了設置,您還可以選擇增加(增加)和添加(添加)
從Solr 4開始,您可以更新solr中的字段....無需重新索引整個索引....支持各種修飾符,如....
set - 設置或替換特定值,或者如果指定null作為新值add,則刪除值 - 向列表中添加附加值remove - 從列表中刪除值(或值列表)removeregex - 從中刪除與給定Java正則表達式匹配的列表 - 按特定量遞增數值(使用負值遞減)
例如:
文獻
{
"id": "1",
"name" : "Solr"
"views" : "2"
}
現在更新
$ curl http://localhost:8983/solr/demo/update -d '
[
{"id" : "1",
"author" : {"set":"Neal Stephenson"},
"views" : {"inc":3},
}
]'
將導致
{
"id": "1",
"name" : "Solr"
"views" : "5"
"author" : "Neal Stephenson"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.