在Spring Boot中使用solrj获得xlsx的响应

时间:2018-07-31 13:56:33

标签: solr solrj

在spring boot应用程序中,我使用solrj来查询solr 7.4。我希望输出为render文件(而不是renderMarkers() { return this.state.locations.map((location, i) => { return <Marker key={ i } onClick = { this.onMarkerClick } title = { location.locName } position = { JSON.parse(location.position) } desc = { location.desc } animation = { this.state.animation[i] } name = { location.locName } /> }) } render() { return <div>{ this.renderMarkers() }</div> } )。

here所述,我已将所需的jar添加到solr服务器类路径中。现在,当我在浏览器中点击xlsx时,我将收到solr的正确响应,以将结果下载为xlsx文件。

但是

如何在Spring Boot应用程序中使用SOLRJ实现此目的?


对于其他格式,例如wt = xml / json / csv,solr响应是一个字符串,我可以从控制器返回它,并在标头中设置内容信息以将其作为文件发送。但是在使用xlsx文件的情况下,我没有获得太多信息。



感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

最后我想出了办法。
按照solr documentation,首先将所需的jar复制到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);