private void SetupAzureSearchClient() { var searchName = CloudConfigurationManager.GetSetting("AzureSearchServiceName") ?? AzureConfiguration.AzureSearchServiceName; var searchKey = CloudConfigurationManager.GetSetting("AzureSearchServiceApiKey") ?? AzureConfiguration.AzureSearchServiceApiKey; //create client/index for indexing AzureServiceClient = new SearchServiceClient(searchName, new SearchCredentials(searchKey)); AzureIndexClient = AzureServiceClient.Indexes.GetClient(Name); var retryStrategy = new IncrementalRetryStrategy(AzureConfiguration.AzureSearchRetryCount, TimeSpan.FromSeconds(AzureConfiguration.AzureSearchRetryInitialInterval), TimeSpan.FromSeconds(AzureConfiguration.AzureSearchRetryIncrement)); var retryPolicy = new RetryPolicy <AzureErrorIndexDetectionStrategy>(retryStrategy); AzureIndexClient.SetRetryPolicy(retryPolicy); //create client/index for searching AzureSearchClient = AzureServiceClient.Indexes.GetClient(Name); //AzureSearchClient.UseHttpGetForQueries = true; }
/// <summary> /// This is implemented in lieu of <see cref="IndexesGetClientExtensions.GetClient(IIndexesOperations, string)"/> /// because it allows the delegating handlers and retry policy to be specified. See: /// https://github.com/Azure/azure-sdk-for-net/blob/96421089bc26198098f320ea50e0208e98376956/sdk/search/Microsoft.Azure.Search/src/IndexesGetClientExtensions.cs#L27-L41 /// </summary> public ISearchIndexClientWrapper GetClient(string indexName) { var searchIndexClient = new SearchIndexClient( _inner.Client.SearchServiceName, indexName, _inner.Client.SearchCredentials, _inner.Client.HttpMessageHandlers.OfType <HttpClientHandler>().SingleOrDefault(), _handlers); searchIndexClient.SearchDnsSuffix = _inner.Client.SearchDnsSuffix; searchIndexClient.HttpClient.Timeout = _inner.Client.HttpClient.Timeout; if (_retryPolicy != null) { searchIndexClient.SetRetryPolicy(_retryPolicy); } return(new SearchIndexClientWrapper(searchIndexClient, _documentsOperationsLogger)); }