【问题标题】:What is the Elasticsearch.Net 2.x equivalent for IElasticSearchResponse.NumberOfRetries?IElasticSearchResponse.NumberOfRetries 的 Elasticsearch.Net 2.x 等效项是什么?
【发布时间】:2016-08-11 13:00:22
【问题描述】:

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

在我们的 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.??????);
    }

我无法在IApiCallDetails 上找到IElasticSearchResponse.NumberOfRetries 的明显等价物。谁能指出我正确的方向?

【问题讨论】:

  • 可以是 details.AuditTrail.Sum(x => x.Node.FailedAttempts) 吗?

标签: elasticsearch elasticsearch-net


【解决方案1】:

我已将此问题提交给 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);

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多