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

## Class CloudLegacySolrClient.Builder

- java.lang.Object
- - org.apache.solr.client.solrj.impl.SolrClientBuilder<CloudLegacySolrClient.Builder>
  - - org.apache.solr.client.solrj.impl.CloudLegacySolrClient.Builder

Enclosing class:
  CloudLegacySolrClient

    public static class CloudLegacySolrClient.Builder
    extends SolrClientBuilder<CloudLegacySolrClient.Builder>

Constructs `CloudLegacySolrClient` instances from provided configuration.

### Field Summary

Fields
`protected boolean` `directUpdatesToLeadersOnly`
`protected LBHttpSolrClient.Builder` `lbClientBuilder`
`protected LBHttpSolrClient` `loadBalancedSolrClient`
`protected boolean` `parallelUpdates`
`protected boolean` `shardLeadersOnly`
`protected List<String>` `solrUrls`
`protected ClusterStateProvider` `stateProvider`
`protected String` `zkChroot`
`protected Collection<String>` `zkHosts`

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

`connectionTimeoutMillis, httpClient, responseParser, socketTimeoutMillis`

### Constructor Summary

Constructors
`protected` `Builder()` Constructor for use by subclasses.
`` `Builder​(List<String> solrUrls)` Provide a series of Solr URLs to be used when configuring `CloudLegacySolrClient` instances.
`` `Builder​(List<String> zkHosts, Optional<String> zkChroot)` Provide a series of ZK hosts which will be used when configuring `CloudLegacySolrClient` instances.
`` `Builder​(ClusterStateProvider stateProvider)` Provide an already created `ClusterStateProvider` instance

### Method Summary

All Methods Instance Methods Concrete Methods
`CloudLegacySolrClient` `build()` Create a `CloudLegacySolrClient` based on the provided configuration.
`CloudLegacySolrClient.Builder` `getThis()` The solution for the unchecked cast warning.
`CloudLegacySolrClient.Builder` `sendDirectUpdatesToAnyShardReplica()` Tells `CloudLegacySolrClient.Builder` that created clients can send updates to any shard replica (shard leaders and non-leaders).
`CloudLegacySolrClient.Builder` `sendDirectUpdatesToShardLeadersOnly()` Tells `CloudLegacySolrClient.Builder` that created clients should send direct updates to shard leaders only.
`CloudLegacySolrClient.Builder` `sendUpdatesOnlyToShardLeaders()` Tells `CloudLegacySolrClient.Builder` that created clients should send updates only to shard leaders.
`CloudLegacySolrClient.Builder` `sendUpdatesToAllReplicasInShard()` Tells `CloudLegacySolrClient.Builder` that created clients should send updates to all replicas for a shard.
`CloudLegacySolrClient.Builder` `withLBHttpSolrClient​(LBHttpSolrClient loadBalancedSolrClient)` Provides a `LBHttpSolrClient` for the builder to use when creating clients.
`CloudLegacySolrClient.Builder` `withLBHttpSolrClientBuilder​(LBHttpSolrClient.Builder lbHttpSolrClientBuilder)` Provides a `HttpClient` for the builder to use when creating clients.
`CloudLegacySolrClient.Builder` `withParallelUpdates​(boolean parallelUpdates)` Tells `CloudLegacySolrClient.Builder` whether created clients should send shard updates serially or in parallel

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

`withConnectionTimeout, withHttpClient, withResponseParser, withSocketTimeout`

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

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

### Field Detail

#### zkHosts

    protected Collection<String> zkHosts

#### solrUrls

    protected List<String> solrUrls

#### zkChroot

    protected String zkChroot

#### loadBalancedSolrClient

    protected LBHttpSolrClient loadBalancedSolrClient

#### lbClientBuilder

    protected LBHttpSolrClient.Builder lbClientBuilder

#### shardLeadersOnly

    protected boolean shardLeadersOnly

#### directUpdatesToLeadersOnly

    protected boolean directUpdatesToLeadersOnly

#### parallelUpdates

    protected boolean parallelUpdates

#### stateProvider

    protected ClusterStateProvider stateProvider

### Constructor Detail

#### Builder

    protected Builder()

Constructor for use by subclasses. This constructor was public prior to version 9.0

#### Builder

    public Builder​(List<String> solrUrls)

Provide a series of Solr URLs to be used when configuring `CloudLegacySolrClient` 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​(ClusterStateProvider stateProvider)

Provide an already created `ClusterStateProvider` instance

#### Builder

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

Provide a series of ZK hosts which will be used when configuring `CloudLegacySolrClient` instances.

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.

### Method Detail

#### withLBHttpSolrClientBuilder

    public CloudLegacySolrClient.Builder withLBHttpSolrClientBuilder​(LBHttpSolrClient.Builder lbHttpSolrClientBuilder)

Provides a `HttpClient` for the builder to use when creating clients.

#### withLBHttpSolrClient

    public CloudLegacySolrClient.Builder withLBHttpSolrClient​(LBHttpSolrClient loadBalancedSolrClient)

Provides a `LBHttpSolrClient` for the builder to use when creating clients.

#### sendUpdatesOnlyToShardLeaders

    public CloudLegacySolrClient.Builder sendUpdatesOnlyToShardLeaders()

Tells `CloudLegacySolrClient.Builder` that created clients should send updates only to shard leaders.

WARNING: This method currently has no effect. See SOLR-6312 for more information.

#### sendUpdatesToAllReplicasInShard

    public CloudLegacySolrClient.Builder sendUpdatesToAllReplicasInShard()

Tells `CloudLegacySolrClient.Builder` that created clients should send updates to all replicas for a shard.

WARNING: This method currently has no effect. See SOLR-6312 for more information.

#### sendDirectUpdatesToShardLeadersOnly

    public CloudLegacySolrClient.Builder sendDirectUpdatesToShardLeadersOnly()

Tells `CloudLegacySolrClient.Builder` that created clients should send direct updates to shard leaders only.

UpdateRequests whose leaders cannot be found will "fail fast" on the client side with a `SolrException`

#### sendDirectUpdatesToAnyShardReplica

    public CloudLegacySolrClient.Builder sendDirectUpdatesToAnyShardReplica()

Tells `CloudLegacySolrClient.Builder` that created clients can send updates to any shard replica (shard leaders and non-leaders).

Shard leaders are still preferred, but the created clients will fallback to using other replicas if a leader cannot be found.

#### withParallelUpdates

    public CloudLegacySolrClient.Builder withParallelUpdates​(boolean parallelUpdates)

Tells `CloudLegacySolrClient.Builder` whether created clients should send shard updates serially or in parallel

When an `UpdateRequest` affects multiple shards, `CloudLegacySolrClient` splits it up and sends a request to each affected shard. This setting chooses whether those sub-requests are sent serially or in parallel.

If not set, this defaults to 'true' and sends sub-requests in parallel.

#### build

    public CloudLegacySolrClient build()

Create a `CloudLegacySolrClient` based on the provided configuration.

#### getThis

    public CloudLegacySolrClient.Builder getThis()

Description copied from class: `SolrClientBuilder`
The solution for the unchecked cast warning.

Specified by:
  `getThis` in class `SolrClientBuilder<CloudLegacySolrClient.Builder>`