0

ある Solr テーブルから読み取り、ドキュメントを別のキースペースの別のテーブルに書き込もうとしていました。これは、私が使用したコードのランダウン バージョンです。

public static void main(String[] args ) {
    HttpSolrServer solrServer = new HttpSolrServer(sourceSolrTableUrl);
    solrServer.setParser(new XMLResponseParser());

    HttpSolrServer targetSolrServer = new HttpSolrServer(targetSolrTableUrl);

    SolrQuery query1 = new SolrQuery();
    query1.setQuery( "dev_key:T*" );

    QueryResponse query = solrServer.query(query1);
    SolrDocumentList solrDocList = query.getResults();

    Collection<SolrInputDocument> inputDocs = new ArrayList<SolrInputDocument>();
    for (SolrDocument doc : solrDocList) {
        counter++;
        SolrInputDocument inputDoc = new SolrInputDocument();

        value = (String) doc.get(DEV_KEY);
        addToDoc(inputDoc, DEV_KEY, value);

        value = Long.toString((Long)doc.get(DEVICE_ID));
        addToDoc(inputDoc, DEVICE_ID, value);

        value = (String) doc.get(DEVICE_TYPE);
        addToDoc(inputDoc, DEVICE_TYPE, value);

        value = df.format((Date) doc.get(DEVICE_MFG_DATE));
        addToDoc(inputDoc, DEVICE_MFG_DATE, value);

        value = (String) doc.get(DEV_MODEL);
        addToDoc(inputDoc, DEV_MODEL, value);

        inputDocs.add(inputDoc);
         System.out.println(counter + "\t" + value);

        if (inputDocs.size()>5) {
            break;
        }
    }

    try {
        targetSolrServer.add(inputDocs);
        targetSolrServer.commit();
    } catch (SolrServerException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private static void addToDoc(SolrInputDocument doc, String fieldName, String value) {
    doc.addField(fieldName, value);
}

このコードを実行すると、次のエラーが表示されます。

Exception in thread "main" java.lang.RuntimeException: Invalid version (expected 2, but 60) or the data in not in 'javabin' format
at org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:109)
at org.apache.solr.client.solrj.impl.BinaryResponseParser.processResponse(BinaryResponseParser.java:41)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:384)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:181)
at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:117)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:68)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:54)
at com.xyz.SolrPopulater.main(SolrPopulater.java:114)

コードは次の行で壊れているようです。

targetSolrServer.add(inputDocs);

サーバーで実行されている Solr のバージョンは 4.0.0 です。クライアント コードで Solr-4.0.0-BETA jar を使用しています。

何がうまくいかないのかについて、誰かが私にいくつかの指針を教えてもらえますか?

4

1 に答える 1