Package org.apache.solr.client.solrj.impl

## Class CloudSolrClient.Builder

- java.lang.Object
- - org.apache.solr.client.solrj.impl.CloudHttp2SolrClient.Builder
  - - org.apache.solr.client.solrj.impl.CloudSolrClient.Builder

Enclosing class:
  CloudSolrClient

    public static class CloudSolrClient.Builder
    extends CloudHttp2SolrClient.Builder

Constructs `CloudSolrClient` instances from provided configuration.

### Field Summary

### Fields inherited from class org.apache.solr.client.solrj.impl.CloudHttp2SolrClient.Builder

`directUpdatesToLeadersOnly, httpClient, internalClientBuilder, parallelUpdates, shardLeadersOnly, solrUrls, stateProvider, zkChroot, zkHosts`

### Constructor Summary

Constructors
`Builder​(List<String> solrUrls)` Provide a series of Solr URLs to be used when configuring `CloudSolrClient` instances.
`Builder​(List<String> zkHosts, Optional<String> zkChroot)` Provide a series of ZK hosts which will be used when configuring `CloudSolrClient` instances.

### Method Summary

### Methods inherited from class org.apache.solr.client.solrj.impl.CloudHttp2SolrClient.Builder

`build, canUseZkACLs, sendDirectUpdatesToAnyShardReplica, sendDirectUpdatesToShardLeadersOnly, sendUpdatesOnlyToShardLeaders, sendUpdatesToAnyReplica, setParallelCacheRefreshes, setRetryExpiryTime, withCollectionCacheTtl, withCollectionCacheTtl, withDefaultCollection, withHttpClient, withInternalClientBuilder, withParallelCacheRefreshes, withParallelUpdates, withRequestWriter, withResponseParser, withRetryExpiryTime, withZkClientTimeout, withZkConnectTimeout`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Builder

    public Builder​(List<String> solrUrls)

Provide a series of Solr URLs to be used when configuring `CloudSolrClient` instances. The solr client will use these urls to understand the cluster topology, which solr nodes are active etc.

Provided Solr URLs are expected to point to the root Solr path ("http://hostname:8983/solr"); they should not include any collections, cores, or other path components.

Usage example:

       final List<String> solrBaseUrls = new ArrayList<String>();
       solrBaseUrls.add("http://solr1:8983/solr"); solrBaseUrls.add("http://solr2:8983/solr"); solrBaseUrls.add("http://solr3:8983/solr");
       final SolrClient client = new CloudSolrClient.Builder(solrBaseUrls).build();

#### Builder

    public Builder​(List<String> zkHosts,
                   Optional<String> zkChroot)

Provide a series of ZK hosts which will be used when configuring `CloudSolrClient` instances. This requires a dependency on `solr-solrj-zookeeper` which transitively depends on more JARs. The ZooKeeper based connection is the most reliable and performant means for CloudSolrClient to work. On the other hand, it means exposing ZooKeeper more broadly than to Solr nodes, which is a security risk.

Usage example when Solr stores data at the ZooKeeper root ('/'):

       final List<String> zkServers = new ArrayList<String>();
       zkServers.add("zookeeper1:2181"); zkServers.add("zookeeper2:2181"); zkServers.add("zookeeper3:2181");
       final SolrClient client = new CloudSolrClient.Builder(zkServers, Optional.empty()).build();

Usage example when Solr data is stored in a ZooKeeper chroot:

        final List<String> zkServers = new ArrayList<String>();
        zkServers.add("zookeeper1:2181"); zkServers.add("zookeeper2:2181"); zkServers.add("zookeeper3:2181");
        final SolrClient client = new CloudSolrClient.Builder(zkServers, Optional.of("/solr")).build();

Parameters:
  `zkHosts` - a List of at least one ZooKeeper host and port (e.g. "zookeeper1:2181")
  `zkChroot` - the path to the root ZooKeeper node containing Solr data. Provide `java.util.Optional.empty()` if no ZK chroot is used.