在 spring 引导中使用 solrj 获取 xlsx 响应

Get a response as xlsx using solrj in spring boot

在 spring 启动应用程序中,我使用 solrj 在 solr 7.4 上查询。我希望输出为 xlsx 文件(而不是 csv)。

如前所述here,我已将所需的 jar 添加到 solr 服务器类路径中。现在,当我在浏览器中点击 http://localhost:8983/solr/collection_name/select?q=*:*&wt=xlsx 时,我从 solr 得到了正确的响应,将结果下载为 xlsx 文件。

但是

如何在 spring 引导应用程序中使用 SOLRJ 实现此目的?


对于其他格式,如 wt=xml/json/csv,solr 响应是一个字符串,我可以从控制器 return 并在 header 中设置内容信息以将其作为文件发送。但是我没有得到太多关于如何在 xlsx 文件的情况下实现它的信息。



感谢任何帮助。

终于想到办法了。
根据 solr documentation,首先将所需的 jars 复制到 solr 服务器类路径中,然后使用以下代码将响应获取为 xlsx 文件...

SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("add solr query");
solrQuery.addFilterQuery("add filter query");
solrQuery.setParam("wt", "xlsx");

QueryRequest request = new QueryRequest(solrQuery);
request.setMethod(METHOD.POST);
request.setResponseParser(new InputStreamResponseParser("xlsx"));

SolrClient client = // create solrClient
NamedList<Object> resp = client.request(request, collectionName);
InputStream xlsxStream = (InputStream) resp.get("stream");
OutputStream outStream = new FileOutputStream("/path/to/xlsx/file");
IOUtils.copy(xlsxStream, output);