调试模式编辑

调试信息 解释了 Elasticsearch.Net 和 NEST 的每个响应都包含一个 DebugInformation 属性,并且 ConnectionSettingsRequestConfiguration 上的属性可以分别控制在所有请求或每个请求的基础上包含哪些附加信息。

在开发过程中,启用最详细的调试信息可能很有用,这有助于识别和解决问题,或者只是确保客户端按预期运行。 ConnectionSettings 上的 EnableDebugMode 设置是启用详细调试信息的便捷简写,它配置了许多设置,例如

  • 禁用直接流式传输以捕获请求和响应字节
  • 美化来自 Elasticsearch 的 JSON 响应
  • 在发出请求时收集 TCP 统计信息
  • 在发出请求时收集线程池统计信息
  • 如果服务器端出现错误,则在响应中包含 Elasticsearch 堆栈跟踪
IConnectionPool pool = new SingleNodeConnectionPool(new Uri("https://127.0.0.1:9200"));

var settings = new ConnectionSettings(pool)
    .EnableDebugMode(); 

var client = new ElasticClient(settings);

var response = client.Search<Project>(s => s
    .Query(q => q
        .MatchAll()
    )
);

var debugInformation = response.DebugInformation; 

配置调试模式

详细调试信息

除了在响应中公开调试信息外,调试模式还会导致调试信息默认情况下写入 System.Diagnostics.Debug.Listeners 集合中的跟踪侦听器,当请求完成时。在启用调试模式时,可以传递一个委托来执行不同的操作,当请求完成时,使用 OnRequestCompleted

var pool = new SingleNodeConnectionPool(new Uri("https://127.0.0.1:9200"));
var client = new ElasticClient(new ConnectionSettings(pool)
    .EnableDebugMode(apiCallDetails =>
    {
        // do something with the call details e.g. send with logging framework
    })
);