nest - 在Elasticsearch/Nest Bulk API中的哪里指定 “MaxRetry”和 “Timeout”变量?

标签 nest elasticsearch

问题:在哪里可以指定NEST批量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();
      }

}

最佳答案

我测试了,这就是我指定超时和最大重试次数的方式:

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

关于nest - 在Elasticsearch/Nest Bulk API中的哪里指定 “MaxRetry”和 “Timeout”变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29805385/

相关文章:

elasticsearch - 为什么要在C#中使用NEST客户端,而不通过 Elasticsearch JSON查询直接查询 Elasticsearch 服务器?

elasticsearch - elasticsearch渗滤器过滤失败

elasticsearch - 在has-child查询中从子项中获取某些字段

elasticsearch - 模糊查询不返回记录

elasticsearch - 使用 Elasticsearch 的简单 AND 查询

c# - ElasticSearch.NET NEST 搜索<T> url

c# - NEST C# - elasticsearch - 电子商务过滤器组合

elasticsearch - 在ElasticSearch 6中使用过滤器按嵌套对象聚合

c# - 如何使用 Serilog 在 Json 中获取日志级别 - .NET Core 3.1

elasticsearch - 创建索引 Nest