如何呈现NEST查询结果?

时间:2015-01-05 14:22:52

标签: elasticsearch nest

我想将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(完整或部分)到控制台?

2 个答案:

答案 0 :(得分:1)

假设您使用的是NEST版本1.3.1,您可以:

  • 使用result.RequestInformation.ResponseRaw.Utf8String()
  • 获取原始JSON响应
  • 解析JSON以获取_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