Apache Solr 文件未编入索引或 "uploaded"

Apache Solr file not getting indexed or "uploaded"

我正在使用 apache Solr 和 Java 尝试索引一些文件。我使用 Java 和 solrj 一直没有成功。我使用的是 5.2 版,但我也尝试过 5.1 版但没有成功

我可以使用 curl 发送文件进行索引,然后我可以使用 Solr 成功搜索该文件。这是我使用的命令:

curl "http://solraddress/solr/my_core/update/extract?literal.id=testdoc&commit=true" -F "testfile=@/Users/lesson2.pdf"

如前所述,我可以搜索并获取此文件。

使用 solrj 我试图使用此代码发送文件以进行索引:

ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");

req.addFile(myFile, "application/octet-stream");
req.setParam("literal.id", "testfile1.pdf");
req.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);

NamedList<Object> result = solr.request(req);
System.out.println("Result: " + result);

这会产生此错误:

Error adding field 'stream_size'='null' msg=For input string: "null" using ContentStreamUpdateRequest

我找不到该错误的解决方案,所以我说,我将制作自​​己的包装器来执行此操作。我从我的 curl 请求中得到了 headers,它们是:

> POST solr/my_core/update/extract?literal.id=testdoc&commit=true HTTP/1.1
> User-Agent: curl/7.37.1
> Host: MyHost
> Accept: */*
> Content-Length: 220
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------aad460cc324256ec

并构建了一个 POST 请求来包含这些 headers 和一个多部分文件在请求的 body 中,这样做给了我一个 200 响应和 body :

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">137</int></lst>
</response>

这似乎是一个积极的回应,因为它与我的 curl 请求给我的回应相匹配,但该文件似乎从未被索引过,因为我在 solr 上找不到它。

有人知道吗?

这是 Solr 5 中的一个错误。Solr JIRA 上有一个解决此问题的公开票证:

SOLR-7498: Error adding field 'stream_size'='null' msg=For input string: "null" using ContentStreamUpdateRequest