我想将NEST查询结果作为控制台输出返回。
我的查询是:
private static void PerformTermQuery(string query)
{
var result =
client.Search<Post>(s => s
.Query(p => p.Term(q => q.PostText, query)));
}
我得到的是对象,有2个文件。如何&#34;打开包装&#34;它将文件显示为json(完整或部分)到控制台?
答案 0 :(得分:1)
假设您使用的是NEST版本1.3.1,您可以:
result.RequestInformation.ResponseRaw.Utf8String()
_source
_source
上使用SearchSourceDescriptor
添加/排除SearchDescriptor
个媒体资源
var result =
client.Search<Post>(s => s
.Query(p => p.Term(q => q.PostText, query)).Source(...));
答案 1 :(得分:0)
对于NEST / Elasticsearch 5.x,result.RequestInformation
不再可用。相反,您可以首先禁用请求上的直接流式传输来访问原始请求和响应数据:
var results = elasticClient.Search<MyObject>(s => s
.Index("myindex")
.Query(q => q
...
)
.RequestConfiguration(rc => rc
.DisableDirectStreaming()
)
);
禁用直接流式传输后,您可以访问 results.ApiCall.ResponseBodyInBytes
(如果您查看此属性而不禁用直接流式传输,则会为空)
string rawResponse = Encoding.UTF8.GetString(results.ApiCall.ResponseBodyInBytes);
这可能会对性能产生影响,因此我会避免在生产中使用它。如果您需要在所有查询中使用它,您还可以在连接/客户端级别禁用直接流式传输。 Take a look at the documentation for more information