[英]Pass Json string in body to query solr using Solrj
我正在使用httpclient從Java代碼查詢solr服務器。 現在,我只想使用solrj庫轉換所有代碼。 我找不到適合它的任何文檔。 我現有的代碼是這樣的
HttpURLConnection conn = (HttpURLConnection) new URL(url.toString()).openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "*/*");
conn.setInstanceFollowRedirects(false);
OutputStream os = conn.getOutputStream();
os.write(inputJson.getBytes());
os.flush();
os.close();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//read resp from rd
如何使用solrj做同樣的事情? 這是使用curl JSON Request API要做的相同操作的文檔
我想發送inputJson
String作為請求正文。 此Json字符串可以包含任何動態鍵值。 正如我使用http rest調用所示,它是可行的。 但是如何使用solrj做同樣的事情?
這是一個通過SolrJ
的簡單查詢示例:
package eric.search.solr.solrj;
import java.io.IOException;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
/**
* SolrJ test - solr5
*
* @author eric
* @date Aug 7, 2015 3:56:08 PM
*/
public class Solrj5Test {
// query via edismax - test
public static void queryEdismaxTest() {
String coreUrl = "http://localhost:8983/solr/search_cn";
SolrClient client;
try {
// create client
client = new HttpSolrClient(coreUrl);
// create query,
SolrQuery query = new SolrQuery();
query.setQuery("java"); // q
query.addFilterQuery("authors:布魯斯"); // fq
// query.setFields("id", "cn_name", "en_name", "authors"); // fl
query.setStart(0); // start
query.setRows(10); // rows
query.set("defType", "edismax"); // defType
query.set("qf", "cn_name"); // qf
// get response
QueryResponse response = client.query(query);
// get documents
SolrDocumentList docList = response.getResults();
System.out.printf("doc count: %d\n", docList.size());
client.close();
} catch (SolrServerException | IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
queryEdismaxTest();
}
}
如果您想將原始輸出作為json,SolrJ會將結果包裝到Java對象中。 然后,我建議您使用HttpClient
之類的工具通過solr網站的url檢索結果,然后通過Jackson
將結果解析為json樹JsonNode
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.