DSE solr 3.2.5:无法使用solrj java api插入文档

时间:2015-02-25 20:13:37

标签: solr cassandra datastax

我正在尝试将文档插入到solr核心中。

插入文档的代码

  public void addDocs(){
    // do not include '#' as a part of url
    String url = "http://localhost:8983/solr/moviedata.movie_rating";

    SolrClient solrclient = new HttpSolrClient(url);
    SolrInputDocument doc1 = new SolrInputDocument();
    doc1.addField("movieid", 1535);
    doc1.addField("avgrating", 4);
    doc1.addField("name", "some movie");

    Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    docs.add(doc1);
    try {
         // solrclient.add(doc1); // adding single doc also throws same exception
         solrclient.add(docs);
         solrclient.commit();

    } catch (SolrServerException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

我收到错误:

Exception in thread "main" org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:   
    Error from server at http://localhost:8983/solr/moviedata.movie_rating:
      Insert command failed after 4 attempts, source exception follows.

at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:558)
at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:214)
at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:210)
at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:124)
at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:117)
at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:103)

我试图在cassandra.yaml中增加写入超时间隔,但它没有帮助。

1 个答案:

答案 0 :(得分:1)

我的第一个想法是,在使用DSE时,您不应该直接将数据插入Solr。最好将数据插入到Cassandra表中,然后让该工具与Solr进行同步。

那就是说,我认为你应该在stacktrace中有一个更精确的错误(一个根本原因)。您提供的错误有点笼统,只能用它来回答。您能否向我们提供有关Cassandra和Solr中受影响元素的更多详细信息(schema.xml和Cassandra创建表的摘录)?谢谢!

希望它有所帮助, 亨利