簡體   English   中英

向所有現有 Solr 文檔添加一個帶值的字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM