我们的客户端代码直接与elasticsearch响应一起工作,但我想把NEST放在中间做一些安全性和过滤.使用NEST(或elasticsearch.net)构建查询的最简单方法是什么,然后以最少的处理量将原始json响应传递回我的客户端.顺便说一句,我也在使用ServiceStack.
以前类似的问题现在已经过时了 - 在ElasticSearch NEST查询中返回Raw Json
谢谢
这对于希望在撰写本文时在较新版本的NEST v2.3中实现相同功能的读者有所帮助。如果您只想要响应,则只需ElasticLowLevelClient
根据doc使用,即可:
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); }