2016-07-24 81 views
0

我有一个本地的两个实例Solr Cloud设置了一个zookeeper实例。我试图通过SolrJ进行连接来执行查询,但是我的代码在执行查询时挂起了2分钟左右,然后失败。我遵循Solr wiki上的基本示例。日志/代码如下SolrJ在连接到zookeeper时挂起

2016-07-24 13:29:01.932 INFO 83666 --- [qtp699221219-28] org.apache.zookeeper.ZooKeeper   : Initiating client connection, connectString=localhost:2181 sessionTimeout=10000 [email protected] 
2016-07-24 13:29:01.948 INFO 83666 --- [qtp699221219-28] o.a.solr.common.cloud.ConnectionManager : Waiting for client to connect to ZooKeeper 

2016-07-24 13:29:01.953 INFO 83666 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn   : Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) 

2016-07-24 13:29:01.955 INFO 83666 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn   : Socket connection established to localhost/127.0.0.1:2181, initiating session 

2016-07-24 13:29:01.967 INFO 83666 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn   : Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x1561cdd875e0004, negotiated timeout = 10000 

2016-07-24 13:29:01.972 INFO 83666 --- [back-3-thread-1] o.a.solr.common.cloud.ConnectionManager : Watcher [email protected] name:ZooKeeperConnection Watcher:localhost:2181 got event WatchedEvent state:SyncConnected type:None path:null path:null type:None 

2016-07-24 13:29:01.972 INFO 83666 --- [qtp699221219-28] o.a.solr.common.cloud.ConnectionManager : Client is connected to ZooKeeper 

2016-07-24 13:29:01.973 INFO 83666 --- [qtp699221219-28] o.apache.solr.common.cloud.SolrZkClient : Using default ZkACLProvider 

2016-07-24 13:29:01.974 INFO 83666 --- [qtp699221219-28] o.a.solr.common.cloud.ZkStateReader  : Updating cluster state from ZooKeeper... 



2016-07-24 13:29:01.990 INFO 83666 --- [qtp699221219-28] o.a.solr.common.cloud.ZkStateReader  : Loaded empty cluster properties 

2016-07-24 13:29:01.995 INFO 83666 --- [qtp699221219-28] o.a.solr.common.cloud.ZkStateReader  : Updated live nodes from ZooKeeper... (0) -> (2) 

2016-07-24 13:31:24.653 ERROR 83666 --- [qtp699221219-28] o.a.s.client.solrj.impl.CloudSolrClient : Request to collection foo failed due to (0) java.net.ConnectException: Operation timed out, retry? 0 

,我的代码是:

String zkHostString = "localhost:2181"; 
    CloudSolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHostString).build(); 
    solr.setDefaultCollection("foo"); 
    SolrQuery query = new SolrQuery(); 
    query.set("q", "*:*"); 
    QueryResponse response = null; 
    try { 
     response = solr.query(query); 
    } catch (SolrServerException e) { 
     return null; 
    } 
    //Do Something with the results... 
+0

这是Solr的6.1 – Sutty1000

回答

1

Urgh,我是个白痴,动物园管理员实例和Solr实例都在里面泊坞窗,上面贴的代码是没有的。所以Zookeeper使用docker containers ip报告了solr url ...主机需要通过localhost而不是docker container ip连接。

如:动物园管理员响应[http://172.17.0.5:8983/solr/foo_shard1_replica2http://172.17.0.6:8984/solr/foo_shard1_replica1] 但我的代码需要调用[http://localhost:8983/solr/foo_shard1_replica2http://localhost:8984/solr/foo_shard1_replica1]