2015-04-22 23 views
0

問題:在哪裏指定在NEST批量API中使用的批量操作「MaxRetry」或「Timeout」變量?在Elasticsearch/Nest Bulk API中指定「MaxRetry」和「Timeout」變量的位置?

當我做下面的批量操作,程序停止後成功插入60K記錄。我在Elasticsearch.Net.Connection.RequestHandlers.RequestHandlerBase.cs中得到了一個MaxRetryException。 所以,我想增加MaxRetry數量或超時秒數來克服這個問題,我在正確的道路上?

var counter = 0; 
var indexName = "SomeIndexName"; 
var indexType = "SomeType"; 
var routingString = "SomeRouting"; 
var bulkDescriptor = new BulkDescriptor(); 

while (await result.ReadAsync()) 
{ 
     counter++; 
     var document = GetDocumentObject<T>(result); 
     var idString = GetID(result); 

     bulkDescriptor.Index<T>(op => op 
      .Routing(routingString) 
      .Index(indexName) 
      .Type(indexType) 
      .Id(idString) 
      .Document(document)); 
     if (counter % 1000 == 0) 
     { 
     var bulkResponse = await client.BulkAsync(bulkDescriptor); 
     bulkDescriptor = new BulkDescriptor(); 
     } 

} 

回答

3

我測試,這就是我如何指定超時&最大重試:

var connectionSettings = new ConnectionSettings(_connectionPool) 
    .SetTimeout(1000*30) // 30 minutes timeout 
    .MaximumRetries(5); // 5 times retry 
var client = new ElasticClient(connectionSettings); 
相關問題