如何查看NESTAPI创建的RESTJSON?

How Do I View the REST JSON created by the NEST API?

我试图在 NEST API 中找到我可以看到 ElasticSearch.NET API 的地方31=] 由 NEST 查询创建。这是我在部分代码示例中总结的问题 -

using NEST;

// create any query 
var elasticResponse = elasticClient.Search<Hotel>(s => s
   .Query(q => // ... build up the rest of my query ... 

elasticResponse.ApiCall.HttpMethod // is "POST" - good! 
elasticResponse.ApiCall.HttpStatusCode // is 200 (OKAY) - good! 
elasticResponse.ApiCall.Success // is true - good! 

// ISSUE: 
// I've tried viewing the generated JSON through these members (in no particular order) without success ... 

elasticResponse.ApiCall.RequestBodyInBytes // is always empty before and after use of the elasticResponse object. 

elasticResponse.ApiCall.DebugInformation // doesn't provide useful info about body. 

elasticResponse.CallDetails.RequestBodyInBytes // is always null.

我正在使用 Elastic Search 2.3.1 和 NEST 2.4.1。

我希望看到 POST 数据或生成的查询的地方没有;它们要么为空要么为 null,并且没有显示任何错误情况,因为查询成功。

我在构建查询时也查看了查询描述符的可用成员,我想我可能能够在我完成查询后立即捕获 RESTful 调用主体,但是没有'还没有发现任何有用的东西。

ConnectionSettings 调出一个 .OnRequestCompleted 回调,但这似乎也没有揭示查询。

我已经浏览了官方 documentation 仍然无济于事。寻求帮助。谢谢你。

我通过使用配置设置找到了一个答案 -

设置 ConnectionSettings(实例) 禁用直接流 属性 到 true.DisableDirectStreaming(true); 并将其传递给新的 Elastic NEST 客户端对象。这将告诉 Elastic 缓冲请求和响应,并使这两个值分别在 .RequestBodyInBytes.ResponseBodyInBytes 属性上可用。

然后您可以使用 .NET 解码字节,例如

global::System.Text.UTF8Encoding.Default.GetString(elasticResponse.ApiCall.RequestBodyInBytes);

并查看原始查询,例如在我的案例中 -

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must": [
              {
                "term": {
                  "shortDescription": {
                    "value": "mile"
                  }
                }
              },
              {
                "term": {
                  "shortDescription": {
                    "value": "museum"
                  }
                }
              }
            ]
          }
        },
        {
          "bool": {
            "should": [
              {
                "term": {
                  "name": {
                    "boost": 1.1,
                    "value": "pacific"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}