我正在尝试使用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的Servlet.service()[com.att.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的Servlet.service()[com.att.dplr.nextgen路径为[]的上下文中的.search.JerseyConfiguration]引发了异常[java.lang.RuntimeException:无法初始化
  使用根本原因对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的Servlet.service()[com.att.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的Servlet.service()[com.att.dplr.nextgen路径为[]的上下文中的.search.JerseyConfiguration]引发了异常[java.lang.RuntimeException:无法初始化
  使用根本原因对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

最佳答案

事实证明,solrurls和zkurls都可以提供给CloudSolrClient.Builder。我可以通过使用接受zkUrls的SolrClient solrClient = new CloudSolrClient.Builder(hosts, Optional.empty()).build();克服上一个问题,而CloudSolrClient.Builder(hosts).build()接受solr Urls

09-25 17:44