2016-07-27 38 views
0

我正在研究一個使用Elasticsearch .NET客戶端庫(Elasticsearch.Net和NEST)的應用程序,並且作爲從Elasticsearch 1.x到2.x的轉換的一部分,我試圖找出2 .x相當於以前通過IElasticSearchResponse暴露的一些數據。什麼是IElasticSearchResponse.NumberOfRetries的Elasticsearch.Net 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。任何人都可以將我指向正確的方向嗎?

+0

難道是details.AuditTrail.Sum(x => x.Node.FailedAttempts)? –

回答

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); 
相關問題