[英]Add a field with value to all existing Solr documents
我想為所有現有的 Solr 文檔添加一個具有值的字段。 我在網上搜索了很多,但找不到明確的方法。 我還需要能夠按該字段搜索/過濾文檔。
編輯:添加說明 - 我也想用這個新字段和值更新所有現有文檔。
一個默認值,當它被索引時,將自動添加到任何在此字段中沒有值的文檔。
如果未指定此屬性,則沒有默認值。 例如
<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" />
請參閱Solr 文檔
部分更新文件的另一種選擇如下
{
"id": "123",
"name" : "Solr Updates"
}
讓我們向文檔添加一個作者字段,該字段值將是一個帶有"set"
屬性和字段值的 json 對象
$ curl http://localhost:8983/solr/update -H 'Content-type:application/json' -d '
[
{"id" : "123",
"author" : {"set":"Robert Wark"}
}
]'
查詢后,您的新文檔將如下所示
$ curl http://localhost:8983/solr/get?id=123
更新文件是:
{
"doc" : {
"id" : "123",
"name" : "Solr Updates"
"author": "Robert Wark"
}
}
請參考下面更新文檔的部分
使用 Java 和 Solrj api 可以按如下方式完成。
SolrInputDocument doc = new SolrInputDocument();
Map<String, String> partialUpdate = new HashMap<String, String>();
partialUpdate.put("set", "Robert Wark");
doc.addField("id", "123");
doc.addField("author", partialUpdate);
對於將來可能遇到相同或類似問題的人:我的 Solr 配置保存在 Java 中,而不是保存在 xml 文件中,因此我決定也用 Java 完成整個更新過程。 首先在配置中添加新字段,然后讀入一批文檔,檢查新字段值是否為空——應該是我們剛剛添加的,然后將字段設置為新值並保存。 分批進行,這樣您就不會因為一次閱讀太多文檔而耗盡內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.