IElasticSearchResponse.NumberOfRetries的Elasticsearch.Net 2.x等价物是什么?

时间:2016-07-27 02:20:16

标签: elasticsearch elasticsearch-net

我正在开发一个使用Elasticsearch .NET客户端库(Elasticsearch.Net和NEST)的应用程序,并且,作为从Elasticsearch 1.x到2.x的转换的一部分,我正在尝试解决2.x等于之前通过IElasticSearchResponse公开的一些数据。

在我们的1.x实现中,我们在提供给ConnectionSettings.SetConnectionStatusHandler()的方法中执行了以下逻辑:

    private static void LogElasticSearch1DotXMetrics(IElasticsearchResponse resp)
    {
        if (resp.NumberOfRetries > 0)
            PerformSomeLoggingOperationOn(resp.NumberOfRetries);
    }

在2.x中,我认为等同于ConnectionSettings.SetConnectionStatusHandler()的方法是将方法传递给ConnectionSettings.OnRequestCompleted()。此方法将收到IApiCallDetails实例。

    private static void LogElasticSearch2DotXMetrics(IApiCallDetails details)
    {
        PerformSomeLoggingOperationOn(details.??????);
    }

我无法在IElasticSearchResponse.NumberOfRetries上找到IApiCallDetails的明显等效词。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我已将此问题提交给Elasticsearch支持人员,并在此处总结他们的回复,以防其他人发现它有用。

Elasticsearch.NET 2.x中没有与NumberOfRetries直接等效的内容。但是,在达到最大重试次数的情况下会发生事件。

var maxRetriesReached = callDetails.AuditTrail
    .Any(a => a.Event == AuditEvent.MaxRetriesReached);

或者,如果您真的对重试次数感兴趣,而不是放弃查询,您还可以观察BadResponse事件的审计跟踪。

var badResponses = callDetails.AuditTrail
    .Any(a => a.Event == AuditEvent.BadResponse);
相关问题