Java 无法将POJO直接更新为solr

Java 无法将POJO直接更新为solr,java,json,solrj,Java,Json,Solrj,我的意图是使用POJO更新solr。我正在尝试使用solrServer和addBean方法更新字段(id) 程序正在正确执行,但我无法在solr中看到我的更新。请让我知道代码中可能有什么错误。我还尝试使用SolrInputDocument添加字段,效果很好(代码段中的注释代码)。如果您能提供一个关于将POJO直接添加到solr的答案,这将对我非常有帮助。代码如下: import org.apache.solr.client.solrj.beans.Field; public class Item

我的意图是使用POJO更新solr。我正在尝试使用solrServer和
addBean
方法更新字段(id)

程序正在正确执行,但我无法在solr中看到我的更新。请让我知道代码中可能有什么错误。我还尝试使用
SolrInputDocument
添加字段,效果很好(代码段中的注释代码)。如果您能提供一个关于将POJO直接添加到solr的答案,这将对我非常有帮助。代码如下:

import org.apache.solr.client.solrj.beans.Field;
public class Item {
            @Field
            String id;
        }

package stockjournalist;
import java.io.IOException;

import org.json.simple.JSONObject;

import org.apache.solr.*;
import org.apache.solr.client.solrj.request.DirectXmlRequest;
import org.apache.solr.client.solrj.request.LukeRequest;
import org.apache.solr.client.solrj.request.SolrPing;
import org.apache.solr.client.solrj.response.LukeResponse;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.FacetField;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.client.solrj.util.ClientUtils;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.util.XML;
import org.apache.solr.common.params.FacetParams;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.impl.*;
import org.apache.solr.client.solrj.beans.Field;

public class JsonSample {

    public static void main(String args[]) throws IOException, SolrServerException{
        JsonSample js = new JsonSample();
        js.insertOneDoc();
    }
    private SolrServer getSolrServer(){ 
            String server = "http://localhost:8983/solr";
            SolrServer solrServer = null;
            solrServer = new HttpSolrServer(server); 
            return solrServer;  
    } 
    public void insertOneDoc() throws SolrServerException, IOException {
          Item item = new Item();
          item.id = "5137158701";
          SolrServer server = getSolrServer();
          server.addBean(item);
          server.commit();
          //String urlString = "http://localhost:8983/solr";
          //HttpSolrServer solr = new HttpSolrServer(urlString);
          //SolrInputDocument doc = new SolrInputDocument();
          //doc.addField("id", "552199");
          //doc.addField("name", "See if 513715870 is available in the index.");
          //solr.add(doc);
          //solr.commit();
        }
}
谢谢你能帮我吗

  • 检查您的solrj版本和solr版本。必须是一样的
  • 打印更新的返回: org.apache.solr.client.solrj.response.从SolrServer更新响应,并在此处传递响应以帮助您

     public void insertOneDoc() throws SolrServerException, IOException {
    Item item = new Item();
    item.id = "5137158701";
    SolrServer server = getSolrServer();
    
    //DEBUG
    UpdateResponse resp= server.addBean(item);
    System.out.println("SolrResponse:"+ r.getStatus() + r.getElapsedTime());
    for( Entry<String, Object> o: r.getResponse()){
        System.out.println("SolrResponse - response :"+ o.getKey() + o.getValue().toString());
    }
    server.commit();
    
    public void insertOneDoc()抛出SolrServerException,IOException{
    项目=新项目();
    item.id=“5137158701”;
    SolrServer服务器=getSolrServer();
    //调试
    UpdateResponse resp=server.addBean(项);
    System.out.println(“SolrResponse:+r.getStatus()+r.getElapsedTime());
    对于(条目o:r.getResponse()){
    System.out.println(“SolrResponse-response:+o.getKey()+o.getValue().toString());
    }
    commit();
    
    }

  • 请参阅solr admin中的日志

  • 共享schema.xml,solrconfig.xml

  • 虽然这篇文章很旧,但我在遇到它的时候也有同样的需要

    因此,由于没有
    updateBean()
    方法,并且索引中有现有文档的id,因此您可以首先通过向
    deleteById
    方法提供其id来删除现有文档,然后像往常一样通过
    addBean
    方法添加bean:

    solrClient.deleteById(item.id);
    solrClient.addBean(item);
    
    请注意:HttpSolrServer已被弃用,取而代之的是HttpSolrClient