李堇 2024-05-09 16:02 采纳率: 48.7%
浏览 10
已结题

JAVA使用solrj添加数据总是报错

solr已经搭建好,并且使用查询是正常的,方法如下:

public static void queryQuestionByContentFromSolr() {
        try {
            String sqStr = "我们的爱";
               ModifiableSolrParams params = new ModifiableSolrParams();  
               params.set(HttpClientUtil.PROP_BASIC_AUTH_USER, "mxjy");  
               params.set(HttpClientUtil.PROP_BASIC_AUTH_PASS, "123456");  
               CloseableHttpClient closeableHttpClient = HttpClientUtil.createClient(params);
               HttpSolrClient.Builder builer = new HttpSolrClient.Builder("http://192.168.0.71:8983/solr/test/").withHttpClient(closeableHttpClient);
               SolrClient client = builer.build();
               SolrQuery sq = new SolrQuery();
               sq.set("q", "QUESTION_STEM:"+sqStr);
               //sq.addFilterQuery("GRADE:"+null);
               //sq.addFilterQuery("COURSE:0005");
               //sq.setRows(5);
               
               QueryResponse response = client.query(sq);
               SolrDocumentList list = response.getResults();
               for (SolrDocument solrDocument : list) {
                    String QUESTION_ID = (String) solrDocument.getFirstValue("QUESTION_ID");
                    String QUESTION_STEM = (String) solrDocument.getFirstValue("QUESTION_STEM");
                    //String GRADE = (String) solrDocument.getFirstValue("GRADE");
                    //String COURSE = (String) solrDocument.getFirstValue("COURSE");
                    //System.out.println("GRADE:"+GRADE+"-COURSE:"+COURSE+"-QUESTION:"+QUESTION_ID + "-" + QUESTION_STEM);
                    System.out.println("QUESTION:"+QUESTION_ID + "-" + QUESTION_STEM);
               }
                client.close();
               System.out.println("结束!");
           } catch (SolrServerException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           }
    }

但是使用类似的代码去添加数据时总是报错,代码如下:

public static void addQuestionToSolr(){
        try {
            ModifiableSolrParams params = new ModifiableSolrParams();  
            params.set(HttpClientUtil.PROP_BASIC_AUTH_USER, "mxjy");  
            params.set(HttpClientUtil.PROP_BASIC_AUTH_PASS, "123456");  
            CloseableHttpClient closeableHttpClient = HttpClientUtil.createClient(params);
            HttpSolrClient.Builder builer = new HttpSolrClient
                    .Builder("http://192.168.0.71:8983/solr/test")
                    .withHttpClient(closeableHttpClient)
                    .withConnectionTimeout(10000)
                    .withSocketTimeout(60000);
               
            SolrClient client = builer.build();
            SolrInputDocument inputDocument = new SolrInputDocument();
            inputDocument.addField("id", "123");
            inputDocument.addField("roleName", "角色名称");
            // 执行添加 ps:如果id相同,则执行更新操作
            // 要指定操作的collection 就是solr-home下定义的core
            client.add(inputDocument);
            // 提交添加/更新
            client.commit();
            System.out.println("结束!");
           } catch (SolrServerException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           }
    }

并且每次都是client.add(inputDocument)这段代码报错,错误日志如下:

log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
org.apache.solr.client.solrj.SolrServerException: IOException occurred when talking to server at: http://192.168.0.71:8983/solr/test
    at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:670)
    at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:262)
    at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:245)
    at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:211)
    at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:177)
    at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:138)
    at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:156)
    _at com.minxue.util.common.SolrUtil.addQuestionToSolr(SolrUtil.java:77)_
    at com.minxue.util.common.SolrUtil.main(SolrUtil.java:54)
Caused by: org.apache.http.client.ClientProtocolException
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:187)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
    at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:555)
    ... 8 more
Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity.
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:226)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    ... 11 more


  • 写回答

3条回答 默认 最新

  • 专家-皆知 2024-05-09 16:02
    关注

    引自免费微信小程序:皆我百晓生

    请检查你的索引字段和发送到Solr的数据格式是否匹配,确保遵守Solr的 schema.xml 配置。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月10日
  • 创建了问题 5月9日

悬赏问题

  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?