On 12/14/2014 12:41 PM, E S J wrote: > This question is related to the same configurations I've posted. How should > I manually test indexing via Zookeeper, I mean not directly accessing solr > nodes like, > curl http://solr1.internal:7083/solr/c-ins/update?commit=true -H > "Content-Type: text/xml" -d "@mem.xml" > > I have a solr client which uses CloudSolrServer to send request to > SolrCloud, But my intention is to isolate my SolrCloud and send index & > search requests to make sure Solr Cloud setup is working fine. Later I can > do Solrclient integration testing. How should I send index requests > manually ( like curl) to index data to solrcloud such a way CloudSolrServer > use ZooKeeper to LB/Pick Solr instance ?
If you have either single-shard collections or multi-shard collections with automatic routing, SolrCloud is designed so that you can send any kind of request to any machine in the entire cloud, and it will be sent where it needs to go. If the collection uses manual (implicit) routing, then queries can go anywhere, but updates must be directed to the correct shard. If you are not using CloudSolrServer, then you must either set up a load balancer in front of SolrCloud, or your application will need to know where your Solr servers are. Curl cannot talk to zookeeper, because zookeeper does not speak HTTP. CloudSolrServer allows your application to specify only the zookeeper hosts, it doesn't need to know where the Solr servers are. This is because it includes a full zookeeper client. There is an API in Solr at /solr/zookeeper that can, with appropriate parameters, return various pieces of information from zookeeper in JSON format. This is the place where the admin UI gathers the information necessary to create the various options on the Cloud tab. Once your application has that information, it can use it to find out the Solr URLs to use. If this doesn't answer your question, please clarify it. Thanks, Shawn