[英]How can I “pass through” the raw json response from a NEST Elasticsearch query?
我们的客户端代码直接与elasticsearch响应一起工作,但我想把NEST放在中间做一些安全性和过滤。 使用NEST(或elasticsearch.net)构建查询的最简单方法是什么,然后以最少的处理量将原始json响应传递回我的客户端。 顺便说一句,我也在使用ServiceStack。
以前类似的问题现在已经过时了 - 在ElasticSearch NEST查询中返回Raw Json
谢谢
这是为了想要在更新版本的NEST,v2.3中实现相同目标的读者的利益。 如果您只想要响应,那么您需要做的就是使用ElasticLowLevelClient
,根据文档 :
var responseJson = client.Search<string>(...);
但是如果你想要输入类型的结果那么它就会更加复杂。 你需要调用DisableDirectStreaming()
上的设置对象,然后从获取原始的JSON response.ApiCall.ResponseBodyInBytes
作为证明这里 。
var settings = new ConnectionSettings(new Uri("http://localhost:9200"))
.DefaultIndex("index1")
.DisableDirectStreaming();
var response = new ElasticClient(settings)
.Search<object>(s => s.AllIndices().AllTypes().MatchAll());
if (response.ApiCall.ResponseBodyInBytes != null)
{
var responseJson = System.Text.Encoding.UTF8.GetString(response.ApiCall.ResponseBodyInBytes);
}
Elasticsearch.Net
允许您直接返回响应流,
var search = client.Search<Stream>(new { size = 10 });
.Search()
有很多重载来限制索引和类型的范围。
这将返回一个IElasticsearchResponse<Stream>
,您可以将响应流直接传递给您的choide的反序列化器(在您的情况下为SS.Text),而不会在其间进行客户端缓冲。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.