簡體   English   中英

使用POST HTTP方法使用SolrJ從Solr讀取數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM