使用CloudSolrClient

时间:2019-08-21 23:23:43

标签: java solr solrj solrcloud

我正在尝试使用solrj CloudSolrClient连接到solrCloud,但是出现错误。

用于直接调用单个solr节点,现在切换到solrcloud。我尝试了在线文档中指定的各种不同的url格式。

SolrClient solrClient = new CloudSolrClient.Builder(zkUrl).build();
SolrQuery solrQuery = new SolrQuery();

solrQuery.setRequestHandler(FIELD_LIST_HANDLER);
QueryRequest req = new QueryRequest(solrQuery);
req.setBasicAuthCredentials(zkUser, zkPassword);
QueryResponse response = req.process(solrClient, core);

使用以下zkHost字符串时,出现各种错误。

主机:2181

  

2019-08-21 15:53:17-错误oaccC [。[。[。[。adnsJerseyConfiguration] [http-nio-8080-exec-1] Servlet [com.att。]的Servlet.service()。路径为[]的上下文中的dplr.nextgen.search.JerseyConfiguration]引发了异常[java.lang.RuntimeException:无法初始化   使用根本原因对HttpClusterStateProvider进行初始化(Solr服务器是否在[host:2181]下?)   org.apache.http.client.ClientProtocolException:URI没有指定有效的主机名:host:2181 / admin / collections?action = CLUSTERSTATUS&wt = javabin&version = 2

http://host:2181

  

2019-08-21 15:55:53-错误oaccC [。[。[。[。adnsJerseyConfiguration] [http-nio-8080-exec-1] Servlet [com.att。]的Servlet.service()。路径为[]的上下文中的dplr.nextgen.search.JerseyConfiguration]引发了异常[java.lang.RuntimeException:无法初始化   具有根本原因的ialialize HttpClusterStateProvider(Solr服务器([http://host:2181],关闭了吗?)]   org.apache.http.NoHttpResponseException:主机:2181无法响应       在org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141)

主机:2181 / solr

  

2019-08-21 16:00:11-错误oaccC [。[。[。[。adnsJerseyConfiguration] [http-nio-8080-exec-1] Servlet [com.att。]的Servlet.service()。路径为[]的上下文中的dplr.nextgen.search.JerseyConfiguration]引发了异常[java.lang.RuntimeException:无法初始化   使用根本原因对HttpClusterStateProvider进行初始化(Solr服务器是否在[host:2181 / solr]下?)   org.apache.http.client.ClientProtocolException:URI没有指定有效的主机名:host:2181 / solr / admin / collections?action = CLUSTERSTATUS&wt = javabin&version = 2       在org.apache.http.impl.client.CloseableHttpClient.determineTarget(CloseableHttpClient.java:95)

http://host:2181/solr

  

2019-08-21 15:57:23-错误oaccC [。[。[。[。adnsJerseyConfiguration] [http-nio-8080-exec-1] Servlet [com.att。]的Servlet.service()。路径为[]的上下文中的dplr.nextgen.search.JerseyConfiguration]引发了异常[java.lang.RuntimeException:无法初始化   具有根本原因的ialialize HttpClusterStateProvider(Solr服务器([http://host:2181/solr],关闭了吗?)]   org.apache.http.NoHttpResponseException:主机:2181无法响应       在org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141)

我需要更改什么才能使用solrj CloudSolrClient通过Zookeeper成功查询solr?

我已经从终端与Zookeeper实例成功通信。

$ echo stat | nc host 2181
Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
Clients:
 /130.10.31.81:60381[0](queued=0,recved=1,sent=0)
 /135.40.74.31:48984[1](queued=0,recved=817933,sent=817933)

Latency min/avg/max: 0/0/80
Received: 1893410
Sent: 1893706
Connections: 2
Outstanding: 0
Zxid: 0xa00000636
Mode: follower
Node count: 214

2 个答案:

答案 0 :(得分:1)

事实证明,solrurls和zkurls都可以提供给CloudSolrClient.Builder。我可以使用SolrClient solrClient = new CloudSolrClient.Builder(hosts, Optional.empty()).build();接受zkUrls,而CloudSolrClient.Builder(hosts).build()接受solr Urls

来解决上一个问题

答案 1 :(得分:0)

当Zookeeper中没有配置itme clusterprops.json的配置时,我也得到了ClientProtocolException 内容:

{"urlScheme":"https"}