You can define a CloudSolrServer as like that: *private static CloudSolrServer solrServer;*
and then define the addres of your zookeeper host: *private static String zkHost = "localhost:9983";* initialize your variable: *solrServer = new CloudSolrServer(zkHost);* You can get leader list as like: *ClusterState clusterState = cloudSolrServer.getZkStateReader().getClusterState(); List<Replica> leaderList = new ArrayList<>(); for (Slice slice : clusterState.getSlices(collectionName)) { leaderList.add(slice.getLeader()); / }* For querying you can try that: * * *SolrQuery solrQuery = new SolrQuery();* *//fill your **solrQuery variable here** * *QueryRequest queryRequest = new QueryRequest(solrQuery, SolrRequest.METHOD.POST); queryRequest.process(**solrServer**);* CloudSolrServer uses LBHttpSolrServer by default. It's definiton is like that: *LBHttpSolrServer or "Load Balanced HttpSolrServer" is just a wrapper to CommonsHttpSolrServer. This is useful when you have multiple SolrServers and query requests need to be Load Balanced among them. It offers automatic failover when a server goes down and it detects when the server comes back up.* * * * * 2013/7/10 Anshum Gupta <ans...@anshumgupta.net> > You don't really need to direct any query specifically to a leader. It will > automatically be routed to the right leader. > You may put a load balancer on top to just fix the problem with querying a > node that has gone away. > > Also, ZK aware SolrJ Java client that load-balances across all nodes in > cluster. > > > On Wed, Jul 10, 2013 at 2:52 PM, Floyd Wu <floyd...@gmail.com> wrote: > > > Hi there, > > > > I've built a SolrCloud cluster from example, but I have some question. > > When I send query to one leader (say > > http://xxx.xxx.xxx.xxx:8983/solr/collection1) and no problem everything > > will be fine. > > > > When I shutdown that leader, the other replica( > > http://xxx.xxx.xxx.xxx:9983/solr/collection1) in the some shard will be > > new > > leader. The problem is: > > > > The application doesn't know new leader's location and still send request > > to http://xxx.xxx.xxx.xxx:8983/solr/collection1 and of course no > response. > > > > How can I know new leader in my application? > > Are there any mechanism that application can send request to one fixed > > endpoint no matter who is leader? > > > > For example, application just send to > > http://xxx.xxx.xxx.xxx:8983/solr/collection1 > > even the real leader run on http://xxx.xxx.xxx.xxx:9983/solr/collection1 > > > > Please help on this or give me some key infomation to google it. > > > > Many thanks. > > > > Floyd > > > > > > -- > > Anshum Gupta > http://www.anshumgupta.net >