這是爲了讀者的利益,他們希望在本文寫作時在新版本的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