Class CloudSolrClient.Builder
- Enclosing class:
CloudSolrClient
CloudSolrClient instances from provided configuration. It will use a Jetty
based HttpClient if available, or will otherwise use the JDK.-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected Stringprotected booleanprotected HttpSolrClientBaseprotected HttpSolrClientBuilderBase<?, ?> protected intprotected booleanprotected RequestWriterprotected ResponseParserprotected longprotected booleanprotected ClusterStateProviderprotected longprotected Stringprotected intprotected intprotected Collection<String> -
Constructor Summary
ConstructorsConstructorDescriptionProvide a series of Solr URLs to be used when configuringCloudSolrClientinstances.Provide a series of ZK hosts which will be used when configuringCloudSolrClientinstances.Builder(ClusterStateProvider stateProvider) for an expert use-case -
Method Summary
Modifier and TypeMethodDescriptionbuild()Create aCloudSolrClientbased on the provided configuration.canUseZkACLs(boolean canUseZkACLs) Whether to use the default ZK ACLs when building a ZK Client.protected ClusterStateProvidercreateHttpClusterStateProvider(HttpSolrClientBase httpClient) protected HttpSolrClientBaseprotected LBSolrClientcreateOrGetLbClient(HttpSolrClientBase myClient) protected ClusterStateProviderTellsCloudSolrClient.Builderthat created clients can send updates to any shard replica (shard leaders and non-leaders).TellsCloudSolrClient.Builderthat created clients should send direct updates to shard leaders only.TellsCloudSolrClient.Builderthat created clients should be configured such thatCloudSolrClient.isUpdatesToLeaders()returnstrue.TellsCloudSolrClient.Builderthat created clients should be configured such thatCloudSolrClient.isUpdatesToLeaders()returnsfalse.withCollectionCacheTtl(long timeToLive, TimeUnit unit) Sets the cache ttl for DocCollection Objects cached.withDefaultCollection(String defaultCollection) Sets the default collection for request.withHttpClient(HttpSolrClientBase httpSolrClient) Set the internal Solr HTTP client.withHttpClientBuilder(HttpSolrClientBuilderBase<?, ?> internalClientBuilder) If provided, the CloudSolrClient will build it's internal client using this builder (instead of the empty default one).withInternalClientBuilder(HttpSolrClientBuilderBase<?, ?> internalClientBuilder) Deprecated.withParallelCacheRefreshes(int parallelCacheRefreshesLocks) Configures how many collection state refresh operations may run in parallel using a dedicated thread pool.withParallelUpdates(boolean parallelUpdates) TellsCloudSolrClient.Builderwhether created clients should send shard updates serially or in parallelwithRequestWriter(RequestWriter requestWriter) Provides aRequestWriterfor created clients to use when handing requests.withResponseParser(ResponseParser responseParser) Provides aResponseParserfor created clients to use when handling requests.withRetryExpiryTime(long expiryTime, TimeUnit unit) This is the time to wait to re-fetch the state after getting the same state version from ZKwithZkClientTimeout(int zkClientTimeout, TimeUnit unit) Sets the Zk client session timeoutwithZkConnectTimeout(int zkConnectTimeout, TimeUnit unit) Sets the Zk connection timeout
-
Field Details
-
zkHosts
-
solrUrls
-
zkChroot
-
httpClient
-
shardLeadersOnly
protected boolean shardLeadersOnly -
directUpdatesToLeadersOnly
protected boolean directUpdatesToLeadersOnly -
parallelUpdates
protected boolean parallelUpdates -
stateProvider
-
internalClientBuilder
-
requestWriter
-
responseParser
-
retryExpiryTimeNano
protected long retryExpiryTimeNano -
defaultCollection
-
timeToLiveSeconds
protected long timeToLiveSeconds -
parallelCacheRefreshesLocks
protected int parallelCacheRefreshesLocks -
zkConnectTimeout
protected int zkConnectTimeout -
zkClientTimeout
protected int zkClientTimeout -
canUseZkACLs
protected boolean canUseZkACLs
-
-
Constructor Details
-
Builder
Provide a series of Solr URLs to be used when configuringCloudSolrClientinstances. 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
Provide a series of ZK hosts which will be used when configuringCloudSolrClientinstances.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. Providejava.util.Optional.empty()if no ZK chroot is used.
-
Builder
for an expert use-case
-
-
Method Details
-
canUseZkACLs
Whether to use the default ZK ACLs when building a ZK Client. -
sendUpdatesOnlyToShardLeaders
TellsCloudSolrClient.Builderthat created clients should be configured such thatCloudSolrClient.isUpdatesToLeaders()returnstrue.- See Also:
-
sendUpdatesToAnyReplica
TellsCloudSolrClient.Builderthat created clients should be configured such thatCloudSolrClient.isUpdatesToLeaders()returnsfalse.- See Also:
-
sendDirectUpdatesToShardLeadersOnly
TellsCloudSolrClient.Builderthat 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- See Also:
-
sendDirectUpdatesToAnyShardReplica
TellsCloudSolrClient.Builderthat created clients can send updates to any shard replica (shard leaders and non-leaders).Shard leaders are still preferred, but the created clients will fall back to using other replicas if a leader cannot be found.
- See Also:
-
withRequestWriter
Provides aRequestWriterfor created clients to use when handing requests. -
withResponseParser
Provides aResponseParserfor created clients to use when handling requests. -
withParallelUpdates
TellsCloudSolrClient.Builderwhether created clients should send shard updates serially or in parallelWhen an
UpdateRequestaffects multiple shards,CloudSolrClientsplits 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.
-
withParallelCacheRefreshes
Configures how many collection state refresh operations may run in parallel using a dedicated thread pool. This controls the maximum number of concurrent ZooKeeper/cluster state lookups.Defaults to 5.
-
withRetryExpiryTime
This is the time to wait to re-fetch the state after getting the same state version from ZK -
withDefaultCollection
Sets the default collection for request. -
withCollectionCacheTtl
Sets the cache ttl for DocCollection Objects cached.- Parameters:
timeToLive- ttl value
-
withHttpClient
Set the internal Solr HTTP client.Note: closing the client instance is the responsibility of the caller.
- Returns:
- this
-
withHttpClientBuilder
public CloudSolrClient.Builder withHttpClientBuilder(HttpSolrClientBuilderBase<?, ?> internalClientBuilder) If provided, the CloudSolrClient will build it's internal client using this builder (instead of the empty default one). Providing this builder allows users to configure the internal clients (authentication, timeouts, etc.).- Parameters:
internalClientBuilder- the builder to use for creating the internal http client.- Returns:
- this
-
withInternalClientBuilder
@Deprecated(since="9.10") public CloudSolrClient.Builder withInternalClientBuilder(HttpSolrClientBuilderBase<?, ?> internalClientBuilder) Deprecated. -
withZkConnectTimeout
Sets the Zk connection timeout- Parameters:
zkConnectTimeout- timeout valueunit- time unit
-
withZkClientTimeout
Sets the Zk client session timeout- Parameters:
zkClientTimeout- timeout valueunit- time unit
-
build
Create aCloudSolrClientbased on the provided configuration. -
createOrGetHttpClient
-
createOrGetLbClient
-
createZkClusterStateProvider
-
createHttpClusterStateProvider
-