2015-05-01 100 views
0

我正在使用以下solrj代碼索引文檔。Solr錯誤使用ContentStreamUpdateRequest上傳文件

 ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract"); 
    ContentStreamBase.FileStream fs = new FileStream(new File(filename)); 
    req.setWaitSearcher(false); 
    req.setMethod(METHOD.POST); 
    //req.addFile(new File(filename), null); 
    req.addContentStream(fs); 
    req.setParam("literal.id", filename); 
    req.setParam("resource.name", filename); 
    //req.setParam("uprefix", "attr_"); 
    //req.setParam("fmap.content", "attr_content"); 
    //req.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true); 
    NamedList<Object> result = this.mHttpSolrClient.request(req); 

但是,我總是要求,它說

4767120 [qtp559670971-21] INFO org.apache.solr.update.processor.LogUpdateProcessor [ test] – [test] webapp=/solr path=/update/extract params={waitSearcher=false&resource.name=/tmp/RUNNING.txt&literal.id=/tmp/RUNNING.txt&wt=javabin&version=2} {} 0 6 
4767121 [qtp559670971-21] ERROR org.apache.solr.core.SolrCore [ test] – org.apache.solr.common.SolrException: ERROR: [doc=/tmp/RUNNING.txt] Error adding field 'stream_size'='null' msg=For input string: "null" 

我使用的是最新版本的Solr 5.1.0後右側獲得一個SolrException。有任何想法嗎?

+1

你有沒有標註「stream_size」作爲您的配置要求的領域?因爲如果你做了,然後你沒有設置它,那可能是問題所在。 –

+0

喬什愛德華茲在哪裏添加?當我創建核心/集合時,我只是做了'./bin/solr create -c test' – Swoorup

+0

您可以在{您的集合文件夾} /conf/schema.xml下看到包含您的字段的配置。看看哪些字段是定義的。會有幾行看起來像這樣:。根據錯誤,我猜測可能有一個名爲「stream_size」的設置爲required =「true」,但未被上面的代碼填充。 –

回答

1

我通過將HttpSolrClient設置爲啓用多部分帖子解決了問題。問我怎麼樣,我不知道。 Solr文檔並沒有很好的解釋。

mHttpSolrClient.setUseMultiPartPost(true);