[英]Using POST HTTP method to read data from Solr using SolrJ
我們使用SolrJ客戶端從Solr查詢文檔。 我們正在構建的查詢很大,Solr拒絕查詢(錯誤響應414 URI Too Long
)。
但是,我可以直接調用Solr的/query
端點,並使用POST請求將查詢作為正文發布。 有沒有辦法使用SolrJ客戶端?
您可以使用QueryRequest在SolrJ中使用post方法,該方法具有設置HTTP方法的選項。
public QueryResponse query(SolrQuery parameters){
QueryResponse resp=null;
try {
QueryRequest queryRequest=new QueryRequest(parameters);
queryRequest.setMethod(SolrRequest.METHOD.POST);
NamedList nl=solrClient.request(queryRequest);
resp=new QueryResponse(nl, solrClient);
} catch (Exception e) {
e.printStackTrace();
}
return resp;
}
如果通過實例化SolrQuery
並要求SolrClient
執行它來執行查詢,則可以簡單地傳遞HTTP方法以用作附加 參數 。 這是一個簡單的例子:
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest.METHOD;
import org.apache.solr.client.solrj.response.QueryResponse;
/* ... */
HttpSolrClient client = new HttpSolrClient.
Builder("http://localhost:8983/solr").
withConnectionTimeout(1000).
withSocketTimeout(60 * 1000).
build();
SolrQuery query = new SolrQuery("*:*");
QueryResponse response = client.query(query, METHOD.POST);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.