这是为了读者的利益,他们希望在本文写作时在新版本的NEST v2.3中实现相同的功能。如果你只是想响应,所有你需要做的是使用ElasticLowLevelClient
,根据doc:
var responseJson = client.Search<string>(...);
但是,如果你想输入的结果,以及那么它稍微有点复杂。您需要在设置对象上调用DisableDirectStreaming()
,然后从response.ApiCall.ResponseBodyInBytes
中检索原始json,如here所示。
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);
}
嗨Martijn, 当我尝试这个,它给了我堆栈溢出。 返回新的HttpResult(搜索); 其中'搜索'是ISearchResponse。我应该如何通过这个服务栈? 谢谢。 –
richardwhatever
2014-11-19 21:37:17
流保存原始JSON作为由elasticsearch发送,你可以简单地阅读你的自我,并将其作为JSON字符串或更精细地使用像http://msdn.microsoft.com/en-us/library /system.net.http.pushstreamcontent%28v=vs.118%29.aspx直接流式传输到web api响应。如果你使用字符串,你也可以使用'Search'这里要注意的关键是响应已经是json作为一个字符串或流,不需要SS.Text来序列化任何东西。 –
2014-11-24 10:56:46
嗨马丁,对不起,但我无法得到这个工作。你可能举一个例子调用。搜索和操纵结果到一个标准的字符串变量?非常感谢! – richardwhatever 2015-09-03 18:38:00