繁体   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