Return json 格式的 solr 响应
Return solr response in json format
我正在尝试 return solr 响应 JSON 格式。但是我无法获得 JSON 响应。下面是我的 solr 配置:'
<queryResponseWriter name="json" default="true" class="org.apache.solr.request.JSONResponseWriter">
<str name="content-type">application/json</str>
</queryResponseWriter>
下面是我的 java 代码:
HttpSolrServer server = new HttpSolrServer(serverUrl);
SolrQuery query = new SolrQuery();
query.setQuery(query);
query.set("indent","true");
query.set("wt","json");
QueryResponse response = server.query(query);
System.out.println(response.getResults().get(index));
但是输出以下列格式显示。
{numFound=1,start=0,docs=[SolrDocument{_uniqueKey=[“abc@gmail.com”,”abc”], calculation_policy=text_value, username=abc, email=abc@gmail.com, display_order=10, last_login=Mon Jan 26 11:27:35 PST 2015, created=Mon Jan 26 11:27:35 PST 2015}]}
但是我在执行以下行后得到 JSON 响应:
System.out.println(new Gson().toJson(queryResponse.getResults().get(index)));
谁能告诉我我错过了哪一步?
也许这个 link 可以澄清:
quoted format json from Solrj
否则,也许您可以仅通过 Http 请求来实现您所需要的,因为我知道确实有 json 支持。
默认情况下,Solrj 使用 wt=javabin&version=2 作为获取结果的默认值,如 http://wiki.apache.org/solr/javabin
中所述
但是要在 json 中显示响应,请使用 GSON 或 Jackson(对象映射器)。
使用较新版本的 Solr(从 4.7.0 开始),可以 return 直接以 json 格式查询响应。这可以通过 NoOpResponseParser
.
来完成
SolrQuery query = new SolrQuery();
QueryRequest req = new QueryRequest(query);
NoOpResponseParser rawJsonResponseParser = new NoOpResponseParser();
rawJsonResponseParser.setWriterType("json");
req.setResponseParser(rawJsonResponseParser);
NamedList<Object> resp = mySolrClient.request(req);
String jsonResponse = (String) resp.get("response");
System.out.println(jsonResponse );
我正在尝试 return solr 响应 JSON 格式。但是我无法获得 JSON 响应。下面是我的 solr 配置:'
<queryResponseWriter name="json" default="true" class="org.apache.solr.request.JSONResponseWriter">
<str name="content-type">application/json</str>
</queryResponseWriter>
下面是我的 java 代码:
HttpSolrServer server = new HttpSolrServer(serverUrl);
SolrQuery query = new SolrQuery();
query.setQuery(query);
query.set("indent","true");
query.set("wt","json");
QueryResponse response = server.query(query);
System.out.println(response.getResults().get(index));
但是输出以下列格式显示。
{numFound=1,start=0,docs=[SolrDocument{_uniqueKey=[“abc@gmail.com”,”abc”], calculation_policy=text_value, username=abc, email=abc@gmail.com, display_order=10, last_login=Mon Jan 26 11:27:35 PST 2015, created=Mon Jan 26 11:27:35 PST 2015}]}
但是我在执行以下行后得到 JSON 响应:
System.out.println(new Gson().toJson(queryResponse.getResults().get(index)));
谁能告诉我我错过了哪一步?
也许这个 link 可以澄清: quoted format json from Solrj
否则,也许您可以仅通过 Http 请求来实现您所需要的,因为我知道确实有 json 支持。
默认情况下,Solrj 使用 wt=javabin&version=2 作为获取结果的默认值,如 http://wiki.apache.org/solr/javabin
中所述但是要在 json 中显示响应,请使用 GSON 或 Jackson(对象映射器)。
使用较新版本的 Solr(从 4.7.0 开始),可以 return 直接以 json 格式查询响应。这可以通过 NoOpResponseParser
.
SolrQuery query = new SolrQuery();
QueryRequest req = new QueryRequest(query);
NoOpResponseParser rawJsonResponseParser = new NoOpResponseParser();
rawJsonResponseParser.setWriterType("json");
req.setResponseParser(rawJsonResponseParser);
NamedList<Object> resp = mySolrClient.request(req);
String jsonResponse = (String) resp.get("response");
System.out.println(jsonResponse );