【发布时间】:2019-12-27 05:51:27
【问题描述】:
我正在尝试使用 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.service() 用于 servlet [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
2019-08-21 15:55:53 - 错误 oaccC[.[.[.[.adnsJerseyConfiguration] [http-nio-8080-exec-1] Servlet.service() 用于 servlet [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.service() 用于 servlet [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)
2019-08-21 15:57:23 - 错误 oaccC[.[.[.[.adnsJerseyConfiguration] [http-nio-8080-exec-1] Servlet.service() 用于 servlet [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
【问题讨论】:
-
你是如何配置zkhost的?它的价值是什么?
-
上例中的
zkUrl是什么?与 zookeeper 合奏的连接不应该在其前面有http。Builder()示例似乎也需要不同的参数,具体取决于 Solr 的版本。你现在使用它的方式使它尝试通过 http 而不是通过 zk 连接。 -
@MatsLindh 对于我成功的
echo stat | nc命令,zkUrl 只是主机(没有 http),我的 zkUrl 有 4 种不同的格式。当我不使用 http 时,我收到错误无法初始化 HttpClusterStateProvider (is/are the Solr server(s), [host:2181], down?)],根本原因是 org.apache.http.client。 ClientProtocolException:URI 未指定有效的主机名。我也尝试过直接使用 ipv4 地址并使用 zk:// 前缀导致 zk 协议不受支持