org.apache.solr.client.solrj.impl

## Class CloudSolrClient

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

- All Implemented Interfaces:
    Closeable, Serializable, AutoCloseable

      public class CloudSolrClient
      extends SolrClient

  SolrJ client class to communicate with SolrCloud. Instances of this class communicate with Zookeeper to discover Solr endpoints for SolrCloud collections, and then use the `LBHttpSolrClient` to issue requests. This class assumes the id field for your documents is called 'id' - if this is not the case, you must set the right name with `setIdField(String)`.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `CloudSolrClient.Builder` Constructs `CloudSolrClient` instances from provided configuration.
    `static class` | `CloudSolrClient.RouteException`
    `static class` | `CloudSolrClient.RouteResponse`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Map<String,org.apache.solr.client.solrj.impl.CloudSolrClient.ExpiringCachedDocCollection>` | `collectionStateCache`
    `static String` | `STATE_VERSION`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CloudSolrClient(Collection<String> zkHosts, String chroot)` Deprecated. use `CloudSolrClient.Builder` instead.
    `CloudSolrClient(Collection<String> zkHosts, String chroot, org.apache.http.client.HttpClient httpClient)` Deprecated. use `CloudSolrClient.Builder` instead.
    `CloudSolrClient(Collection<String> zkHosts, String chroot, org.apache.http.client.HttpClient httpClient, LBHttpSolrClient lbSolrClient, boolean updatesToLeaders)` Deprecated. use `CloudSolrClient.Builder` instead. This will soon be a protected method, and will only be available for use in implementing subclasses.
    `CloudSolrClient(String zkHost)` Deprecated. use `CloudSolrClient.Builder` instead.
    `CloudSolrClient(String zkHost, boolean updatesToLeaders)` Deprecated. use `CloudSolrClient.Builder` instead.
    `CloudSolrClient(String zkHost, boolean updatesToLeaders, org.apache.http.client.HttpClient httpClient)` Deprecated. use `CloudSolrClient.Builder` instead.
    `CloudSolrClient(String zkHost, org.apache.http.client.HttpClient httpClient)` Deprecated. use `CloudSolrClient.Builder` instead.
    `CloudSolrClient(String zkHost, LBHttpSolrClient lbClient)` Deprecated. use `CloudSolrClient.Builder` instead.
    `CloudSolrClient(String zkHost, LBHttpSolrClient lbClient, boolean updatesToLeaders)` Deprecated. use `CloudSolrClient.Builder` instead.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()`
    `CloudSolrClient.RouteResponse` | `condenseResponse(NamedList response, int timeMillis)`
    `void` | `connect()` Connect to the zookeeper ensemble.
    `void` | `connect(long duration, TimeUnit timeUnit)` Connect to a cluster.
    `void` | `downloadConfig(String configName, Path downloadPath)` Download a named config from Zookeeper to a location on the filesystem
    `String` | `getDefaultCollection()` Gets the default collection for request
    `protected DocCollection` | `getDocCollection(ClusterState clusterState, String collection, Integer expectedVersion)`
    `org.apache.http.client.HttpClient` | `getHttpClient()`
    `String` | `getIdField()`
    `LBHttpSolrClient` | `getLbClient()`
    `int` | `getMinAchievedReplicationFactor(String collection, NamedList resp)` Useful for determining the minimum achieved replication factor across all shards involved in processing an update request, typically useful for gauging the replication factor of a batch.
    `ResponseParser` | `getParser()`
    `RequestWriter` | `getRequestWriter()`
    `Map<String,Integer>` | `getShardReplicationFactor(String collection, NamedList resp)` Walks the NamedList response after performing an update request looking for the replication factor that was achieved in each shard involved in the request.
    `String` | `getZkHost()`
    `ZkStateReader` | `getZkStateReader()`
    `boolean` | `isDirectUpdatesToLeadersOnly()`
    `boolean` | `isUpdatesToLeaders()`
    `void` | `registerCollectionStateWatcher(String collection, CollectionStateWatcher watcher)` Register a CollectionStateWatcher to be called when the cluster state for a collection changes Note that the watcher is unregistered after it has been called once.
    `NamedList<Object>` | `request(SolrRequest request, String collection)` Execute a request against a Solr server for a given collection
    `protected NamedList<Object>` | `requestWithRetryOnStaleState(SolrRequest request, int retryCount, String collection)` As this class doesn't watch external collections on the client side, there's a chance that the request will fail due to cached stale state, which means the state must be refreshed from ZK and retried.
    `protected NamedList<Object>` | `sendRequest(SolrRequest request, String collection)`
    `void` | `setCollectionCacheTTl(int seconds)` Sets the cache ttl for DocCollection Objects cached .
    `void` | `setDefaultCollection(String collection)` Sets the default collection for request
    `void` | `setIdField(String idField)`
    `void` | `setParallelCacheRefreshes(int n)` If caches are expired they are refreshed after acquiring a lock.
    `void` | `setParallelUpdates(boolean parallelUpdates)`
    `void` | `setParser(ResponseParser processor)` Note: This setter method is not thread-safe.
    `void` | `setRequestWriter(RequestWriter requestWriter)`
    `void` | `setSoTimeout(int timeout)`
    `void` | `setZkClientTimeout(int zkClientTimeout)` Set the timeout to the zookeeper ensemble in ms
    `void` | `setZkConnectTimeout(int zkConnectTimeout)` Set the connect timeout to the zookeeper ensemble in ms
    `void` | `uploadConfig(Path configPath, String configName)` Upload a set of config files to Zookeeper and give it a name NOTE: You should only allow trusted users to upload configs.
    `void` | `waitForState(String collection, long wait, TimeUnit unit, CollectionStatePredicate predicate)` Block until a collection state matches a predicate, or a timeout Note that the predicate may be called again even after it has returned true, so implementors should avoid changing state within the predicate call itself.

    - ### Methods inherited from class org.apache.solr.client.solrj.SolrClient

      `add, add, add, add, add, add, add, add, add, add, addBean, addBean, addBean, addBean, addBeans, addBeans, addBeans, addBeans, addBeans, addBeans, commit, commit, commit, commit, commit, commit, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteByQuery, deleteByQuery, deleteByQuery, deleteByQuery, getBinder, getById, getById, getById, getById, getById, getById, getById, getById, optimize, optimize, optimize, optimize, optimize, optimize, ping, query, query, query, query, queryAndStreamResponse, queryAndStreamResponse, request, rollback, rollback`

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

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

- - ### Field Detail

    - #### STATE_VERSION

          public static final String STATE_VERSION

      See Also:
        Constant Field Values

    - #### collectionStateCache

          protected final Map<String,org.apache.solr.client.solrj.impl.CloudSolrClient.ExpiringCachedDocCollection> collectionStateCache

  - ### Constructor Detail

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(String zkHost)

      Deprecated. use `CloudSolrClient.Builder` instead.
      Create a new client object that connects to Zookeeper and is always aware of the SolrCloud state. If there is a fully redundant Zookeeper quorum and SolrCloud has enough replicas for every shard in a collection, there is no single point of failure. Updates will be sent to shard leaders by default.
      Parameters:
        `zkHost` - The client endpoint of the zookeeper quorum containing the cloud state. The full specification for this string is one or more comma separated HOST:PORT values, followed by an optional chroot value that starts with a forward slash. Using a chroot allows multiple applications to coexist in one ensemble. For full details, see the Zookeeper documentation. Some examples:

        "host1:2181"

        "host1:2181,host2:2181,host3:2181/mysolrchroot"

        "zoo1.example.com:2181,zoo2.example.com:2181,zoo3.example.com:2181"

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(String zkHost,
                                             org.apache.http.client.HttpClient httpClient)

      Deprecated. use `CloudSolrClient.Builder` instead.
      Create a new client object that connects to Zookeeper and is always aware of the SolrCloud state. If there is a fully redundant Zookeeper quorum and SolrCloud has enough replicas for every shard in a collection, there is no single point of failure. Updates will be sent to shard leaders by default.
      Parameters:
        `zkHost` - The client endpoint of the zookeeper quorum containing the cloud state. The full specification for this string is one or more comma separated HOST:PORT values, followed by an optional chroot value that starts with a forward slash. Using a chroot allows multiple applications to coexist in one ensemble. For full details, see the Zookeeper documentation. Some examples:

        "host1:2181"

        "host1:2181,host2:2181,host3:2181/mysolrchroot"

        "zoo1.example.com:2181,zoo2.example.com:2181,zoo3.example.com:2181"

        `httpClient` - the `HttpClient` instance to be used for all requests. The provided httpClient should use a multi-threaded connection manager.

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(Collection<String> zkHosts,
                                             String chroot)

      Deprecated. use `CloudSolrClient.Builder` instead.
      Create a new client object using multiple string values in a Collection instead of a standard zkHost connection string. Note that this method will not be used if there is only one String argument - that will use `CloudSolrClient(String)` instead.
      Parameters:
        `zkHosts` - A Java Collection (List, Set, etc) of HOST:PORT strings, one for each host in the zookeeper ensemble. Note that with certain Collection types like HashSet, the order of hosts in the final connect string may not be in the same order you added them.
        `chroot` - A chroot value for zookeeper, starting with a forward slash. If no chroot is required, use null.
      Throws:
        `IllegalArgumentException` - if the chroot value does not start with a forward slash.
      See Also:
        `CloudSolrClient(String)`

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(Collection<String> zkHosts,
                                             String chroot,
                                             org.apache.http.client.HttpClient httpClient)

      Deprecated. use `CloudSolrClient.Builder` instead.
      Create a new client object using multiple string values in a Collection instead of a standard zkHost connection string. Note that this method will not be used if there is only one String argument - that will use `CloudSolrClient(String)` instead.
      Parameters:
        `zkHosts` - A Java Collection (List, Set, etc) of HOST:PORT strings, one for each host in the zookeeper ensemble. Note that with certain Collection types like HashSet, the order of hosts in the final connect string may not be in the same order you added them.
        `chroot` - A chroot value for zookeeper, starting with a forward slash. If no chroot is required, use null.
        `httpClient` - the `HttpClient` instance to be used for all requests. The provided httpClient should use a multi-threaded connection manager.
      Throws:
        `IllegalArgumentException` - if the chroot value does not start with a forward slash.
      See Also:
        `CloudSolrClient(String)`

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(Collection<String> zkHosts,
                                             String chroot,
                                             org.apache.http.client.HttpClient httpClient,
                                             LBHttpSolrClient lbSolrClient,
                                             boolean updatesToLeaders)

      Deprecated. use `CloudSolrClient.Builder` instead. This will soon be a protected method, and will only be available for use in implementing subclasses.
      Create a new client object that connects to Zookeeper and is always aware of the SolrCloud state. If there is a fully redundant Zookeeper quorum and SolrCloud has enough replicas for every shard in a collection, there is no single point of failure. Updates will be sent to shard leaders by default.
      Parameters:
        `zkHosts` - A Java Collection (List, Set, etc) of HOST:PORT strings, one for each host in the zookeeper ensemble. Note that with certain Collection types like HashSet, the order of hosts in the final connect string may not be in the same order you added them.
        `chroot` - A chroot value for zookeeper, starting with a forward slash. If no chroot is required, use null.
        `httpClient` - the `HttpClient` instance to be used for all requests. The provided httpClient should use a multi-threaded connection manager. If null, a default HttpClient will be used.
        `lbSolrClient` - LBHttpSolrClient instance for requests. If null, a default LBHttpSolrClient will be used.
        `updatesToLeaders` - If true, sends updates to shard leaders.

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(String zkHost,
                                             boolean updatesToLeaders)

      Deprecated. use `CloudSolrClient.Builder` instead.
      Parameters:
        `zkHost` - A zookeeper client endpoint.
        `updatesToLeaders` - If true, sends updates only to shard leaders.
      See Also:
        `for full description and details on zkHost`

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(String zkHost,
                                             boolean updatesToLeaders,
                                             org.apache.http.client.HttpClient httpClient)

      Deprecated. use `CloudSolrClient.Builder` instead.
      Parameters:
        `zkHost` - A zookeeper client endpoint.
        `updatesToLeaders` - If true, sends updates only to shard leaders.
        `httpClient` - the `HttpClient` instance to be used for all requests. The provided httpClient should use a multi-threaded connection manager.
      See Also:
        `for full description and details on zkHost`

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(String zkHost,
                                             LBHttpSolrClient lbClient)

      Deprecated. use `CloudSolrClient.Builder` instead.
      Parameters:
        `zkHost` - A zookeeper client endpoint.
        `lbClient` - LBHttpSolrServer instance for requests.
      See Also:
        `for full description and details on zkHost`

    - #### CloudSolrClient

          @Deprecated
          public CloudSolrClient(String zkHost,
                                             LBHttpSolrClient lbClient,
                                             boolean updatesToLeaders)

      Deprecated. use `CloudSolrClient.Builder` instead.
      Parameters:
        `zkHost` - A zookeeper client endpoint.
        `lbClient` - LBHttpSolrServer instance for requests.
        `updatesToLeaders` - If true, sends updates only to shard leaders.
      See Also:
        `for full description and details on zkHost`

  - ### Method Detail

    - #### setSoTimeout

          public void setSoTimeout(int timeout)

    - #### setCollectionCacheTTl

          public void setCollectionCacheTTl(int seconds)

      Sets the cache ttl for DocCollection Objects cached . This is only applicable for collections which are persisted outside of clusterstate.json
      Parameters:
        `seconds` - ttl value in seconds

    - #### getParser

          public ResponseParser getParser()

    - #### setParser

          public void setParser(ResponseParser processor)

      Note: This setter method is not thread-safe.
      Parameters:
        `processor` - Default Response Parser chosen to parse the response if the parser were not specified as part of the request.
      See Also:
        `SolrRequest.getResponseParser()`

    - #### getRequestWriter

          public RequestWriter getRequestWriter()

    - #### setRequestWriter

          public void setRequestWriter(RequestWriter requestWriter)

    - #### getZkHost

          public String getZkHost()

      Returns:
        the zkHost value used to connect to zookeeper.

    - #### getZkStateReader

          public ZkStateReader getZkStateReader()

    - #### setIdField

          public void setIdField(String idField)

      Parameters:
        `idField` - the field to route documents on.

    - #### getIdField

          public String getIdField()

      Returns:
        the field that updates are routed on.

    - #### setDefaultCollection

          public void setDefaultCollection(String collection)

      Sets the default collection for request

    - #### getDefaultCollection

          public String getDefaultCollection()

      Gets the default collection for request

    - #### setZkConnectTimeout

          public void setZkConnectTimeout(int zkConnectTimeout)

      Set the connect timeout to the zookeeper ensemble in ms

    - #### setZkClientTimeout

          public void setZkClientTimeout(int zkClientTimeout)

      Set the timeout to the zookeeper ensemble in ms

    - #### connect

          public void connect()

      Connect to the zookeeper ensemble. This is an optional method that may be used to force a connect before any other requests are sent.

    - #### connect

          public void connect(long duration,
                              TimeUnit timeUnit)
                       throws TimeoutException,
                              InterruptedException

      Connect to a cluster. If the cluster is not ready, retry connection up to a given timeout.
      Parameters:
        `duration` - the timeout
        `timeUnit` - the units of the timeout
      Throws:
        `TimeoutException` - if the cluster is not ready after the timeout
        `InterruptedException` - if the wait is interrupted

    - #### setParallelUpdates

          public void setParallelUpdates(boolean parallelUpdates)

    - #### uploadConfig

          public void uploadConfig(Path configPath,
                                   String configName)
                            throws IOException

      Upload a set of config files to Zookeeper and give it a name NOTE: You should only allow trusted users to upload configs. If you are allowing client access to zookeeper, you should protect the /configs node against unauthorised write access.
      Parameters:
        `configPath` - `Path` to the config files
        `configName` - the name of the config
      Throws:
        `IOException` - if an IO error occurs

    - #### downloadConfig

          public void downloadConfig(String configName,
                                     Path downloadPath)
                              throws IOException

      Download a named config from Zookeeper to a location on the filesystem
      Parameters:
        `configName` - the name of the config
        `downloadPath` - the path to write config files to
      Throws:
        `IOException` - if an I/O exception occurs

    - #### waitForState

          public void waitForState(String collection,
                                   long wait,
                                   TimeUnit unit,
                                   CollectionStatePredicate predicate)
                            throws InterruptedException,
                                   TimeoutException

      Block until a collection state matches a predicate, or a timeout Note that the predicate may be called again even after it has returned true, so implementors should avoid changing state within the predicate call itself.
      Parameters:
        `collection` - the collection to watch
        `wait` - how long to wait
        `unit` - the units of the wait parameter
        `predicate` - a `CollectionStatePredicate` to check the collection state
      Throws:
        `InterruptedException` - on interrupt
        `TimeoutException` - on timeout

    - #### registerCollectionStateWatcher

          public void registerCollectionStateWatcher(String collection,
                                                     CollectionStateWatcher watcher)

      Register a CollectionStateWatcher to be called when the cluster state for a collection changes Note that the watcher is unregistered after it has been called once. To make a watcher persistent, it should re-register itself in its `CollectionStateWatcher.onStateChanged(Set, DocCollection)` call
      Parameters:
        `collection` - the collection to watch
        `watcher` - a watcher that will be called when the state changes

    - #### condenseResponse

          public CloudSolrClient.RouteResponse condenseResponse(NamedList response,
                                                                int timeMillis)

    - #### request

          public NamedList<Object> request(SolrRequest request,
                                           String collection)
                                    throws SolrServerException,
                                           IOException

      Description copied from class: `SolrClient`
      Execute a request against a Solr server for a given collection
      Specified by:
        `request` in class `SolrClient`
      Parameters:
        `request` - the request to execute
        `collection` - the collection to execute the request against
      Returns:
        a `NamedList` containing the response from the server
      Throws:
        `SolrServerException` - if there is an error on the server
        `IOException` - If there is a low-level I/O error.

    - #### requestWithRetryOnStaleState

          protected NamedList<Object> requestWithRetryOnStaleState(SolrRequest request,
                                                                   int retryCount,
                                                                   String collection)
                                                            throws SolrServerException,
                                                                   IOException

      As this class doesn't watch external collections on the client side, there's a chance that the request will fail due to cached stale state, which means the state must be refreshed from ZK and retried.
      Throws:
        `SolrServerException`
        `IOException`

    - #### sendRequest

          protected NamedList<Object> sendRequest(SolrRequest request,
                                                  String collection)
                                           throws SolrServerException,
                                                  IOException

      Throws:
        `SolrServerException`
        `IOException`

    - #### close

          public void close()
                     throws IOException

      Throws:
        `IOException`

    - #### getLbClient

          public LBHttpSolrClient getLbClient()

    - #### getHttpClient

          public org.apache.http.client.HttpClient getHttpClient()

    - #### isUpdatesToLeaders

          public boolean isUpdatesToLeaders()

    - #### isDirectUpdatesToLeadersOnly

          public boolean isDirectUpdatesToLeadersOnly()

      Returns:
        true if direct updates are sent to shard leaders only

    - #### setParallelCacheRefreshes

          public void setParallelCacheRefreshes(int n)

      If caches are expired they are refreshed after acquiring a lock. use this to set the number of locks

    - #### getDocCollection

          protected DocCollection getDocCollection(ClusterState clusterState,
                                                   String collection,
                                                   Integer expectedVersion)
                                            throws SolrException

      Throws:
        `SolrException`

    - #### getMinAchievedReplicationFactor

          public int getMinAchievedReplicationFactor(String collection,
                                                     NamedList resp)

      Useful for determining the minimum achieved replication factor across all shards involved in processing an update request, typically useful for gauging the replication factor of a batch.

    - #### getShardReplicationFactor

          public Map<String,Integer> getShardReplicationFactor(String collection,
                                                               NamedList resp)

      Walks the NamedList response after performing an update request looking for the replication factor that was achieved in each shard involved in the request. For single doc updates, there will be only one shard in the return value.

Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.