我试图从一个 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。
谁能给我一些关于可能出了什么问题的指示?