使用 SolrJ 更新 Solr 中的文档
Updating a document in Solr using SolrJ
我在 Solr 中有以下索引数据。我想使用 SolrJ 在这个索引数据中添加一个额外的字段 "Location"。我该怎么做?
"response":{"numFound":3061,"start":3059,"docs":[
{
"Id":12345,
"Name":"Rajeev Kumar",
"_version_":1223434645768768687},
{
"Id":67890,
"Name":"Rohit Kumar",
"_version_":1246457656544545434}]
}}
更新后应该是这样的 -
"response":{"numFound":3061,"start":3059,"docs":[
{
"Id":12345,
"Name":"Rajeev Kumar",
"Location" : <some value>,
"_version_":1223434645768768687},
{
"Id":67890,
"Name":"Rohit Kumar",
"Location": <some value>,
"_version_":1246457656544545434}]
}}
我试过这样的东西 -
public static void main(String[] args) throws SolrServerException, IOException {
String urlString = "http://localhost:8983/solr/gettingstarted";
HttpSolrClient solr = new HttpSolrClient.Builder(urlString).build();
solr.setParser(new XMLResponseParser());
SolrInputDocument document = new SolrInputDocument();
HashMap<String, Object> value = new HashMap<String, Object>();
value.put("set","Delhi");
document.addField("Location", value);
solr.commit();
}
但问题是这是在创建新文档而不是更新旧文档。预先感谢您的帮助。
您必须在文档值中包含 id 部分,否则 Solr 无法找到要更新的原始文档。这应该是一个 uniqueKey 字段。
document.addField("Id", 12345);
您不能在一个请求中对多个文档执行更新,因此每个文档都必须单独更新。
我在 Solr 中有以下索引数据。我想使用 SolrJ 在这个索引数据中添加一个额外的字段 "Location"。我该怎么做?
"response":{"numFound":3061,"start":3059,"docs":[
{
"Id":12345,
"Name":"Rajeev Kumar",
"_version_":1223434645768768687},
{
"Id":67890,
"Name":"Rohit Kumar",
"_version_":1246457656544545434}]
}}
更新后应该是这样的 -
"response":{"numFound":3061,"start":3059,"docs":[
{
"Id":12345,
"Name":"Rajeev Kumar",
"Location" : <some value>,
"_version_":1223434645768768687},
{
"Id":67890,
"Name":"Rohit Kumar",
"Location": <some value>,
"_version_":1246457656544545434}]
}}
我试过这样的东西 -
public static void main(String[] args) throws SolrServerException, IOException {
String urlString = "http://localhost:8983/solr/gettingstarted";
HttpSolrClient solr = new HttpSolrClient.Builder(urlString).build();
solr.setParser(new XMLResponseParser());
SolrInputDocument document = new SolrInputDocument();
HashMap<String, Object> value = new HashMap<String, Object>();
value.put("set","Delhi");
document.addField("Location", value);
solr.commit();
}
但问题是这是在创建新文档而不是更新旧文档。预先感谢您的帮助。
您必须在文档值中包含 id 部分,否则 Solr 无法找到要更新的原始文档。这应该是一个 uniqueKey 字段。
document.addField("Id", 12345);
您不能在一个请求中对多个文档执行更新,因此每个文档都必须单独更新。