我正在尝试使用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
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)
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
答案 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"}