Hi Furkan
I'm using C#,  SolrJ won't help on this, but its impl is a good reference
for me. Thanks for your help.

by the way, how to fetch/get cluster state from zk directly in plain http
or tcp socket?
In my SolrCloud cluster, I'm using standalone zk to coordinate.

Floyd




2013/7/10 Furkan KAMACI <furkankam...@gmail.com>

> 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
> >
>

Reply via email to