Java 使用POST HTTP方法使用SolrJ从Solr读取数据
我们使用SolrJ客户端从Solr查询文档。我们正在构建的查询很大,Solr拒绝该查询(带有错误响应)Java 使用POST HTTP方法使用SolrJ从Solr读取数据,java,solr,solrj,Java,Solr,Solrj,我们使用SolrJ客户端从Solr查询文档。我们正在构建的查询很大,Solr拒绝该查询(带有错误响应) 但是,我可以直接调用Solr的/query端点,并使用post请求将查询作为主体发布。有没有一种方法可以使用SolrJ客户端来实现这一点?您可以使用QueryRequest在SolrJ中使用post方法,该方法具有设置HTTP方法的选项 public QueryResponse query(SolrQuery parameters){ QueryResponse resp=nu
但是,我可以直接调用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;
}
如果通过实例化并要求执行来执行查询,则只需将传递用作。下面是一个简单的例子:
import org.apache.solr.client.solrj.impl.HttpSolrClient;
导入org.apache.solr.client.solrj.SolrQuery;
导入org.apache.solr.client.solrj.SolrRequest.METHOD;
导入org.apache.solr.client.solrj.response.QueryResponse;
/* ... */
HttpSolrClient=新的HttpSolrClient。
建筑商(“http://localhost:8983/solr").
withConnectionTimeout(1000)。
使用SocketTimeout(60*1000)。
build();
SolrQuery query=新的SolrQuery(“*:*”);
QueryResponse response=client.query(query,METHOD.POST);
Hi Amit,您找到使用solrj的解决方案了吗?在我的一个场景中,我也遇到了这个问题