ric*_*ver 5 c# json elasticsearch servicestack nest
我们的客户端代码直接与elasticsearch响应一起工作,但我想把NEST放在中间做一些安全性和过滤.使用NEST(或elasticsearch.net)构建查询的最简单方法是什么,然后以最少的处理量将原始json响应传递回我的客户端.顺便说一句,我也在使用ServiceStack.
以前类似的问题现在已经过时了 - 在ElasticSearch NEST查询中返回Raw Json
谢谢
这对于希望在撰写本文时在较新版本的NEST v2.3中实现相同功能的读者有所帮助。如果您只想要响应,则只需ElasticLowLevelClient根据doc使用,即可:
var responseJson = client.Search<string>(...);
Run Code Online (Sandbox Code Playgroud)
但是,如果您还希望输入结果,那么它会涉及到更多。你需要调用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);
}
Run Code Online (Sandbox Code Playgroud)
Elasticsearch.Net允许您直接返回响应流,
var search = client.Search<Stream>(new { size = 10 });
Run Code Online (Sandbox Code Playgroud)
.Search()有许多重载来通过索引和类型限制其范围。
这将返回一个IElasticsearchResponse<Stream>,您可以在其中将响应流直接传递到您选择的反序列化器(在您的情况下为 SS.Text),而无需客户端在中间缓冲。
| 归档时间: |
|
| 查看次数: |
2896 次 |
| 最近记录: |