如何查看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"
}
}
}
]
}
}
]
}
}
}
我试图在 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"
}
}
}
]
}
}
]
}
}
}