2013-12-23 75 views
7

我正在做一個關於.net中彈性搜索的客戶端的小型研究,我發現NEST是此問題最受支持的解決方案之一。在ElasticSearch NEST查詢中返回原始Json

我在看Nest的文檔,我無法找到一種方法來從查詢中輸出一個原始的json,並避免序列化成一個對象,因爲我在前端使用angularJs而不想通過一些不必要的步驟來重載向客戶端發送信息的過程。

......還我想知道如何重寫序列化過程?

我發現NEST使用Json.NET,我想爲servicestack json serielizer進行更改。

謝謝!

回答

9

佩德羅嗨,你可以用NEST

var searchDescriptor = new SearchDescriptor<ElasticSearchProject>() 
    .Query(q=>q.MatchAll()); 
var request = this._client.Serializer.Serialize(searchDescriptor); 
ConnectionStatus result = this._client.Raw.SearchPost(request); 
Assert.NotNull(result); 
Assert.True(result.Success); 
Assert.IsNotEmpty(result.Result); 

這可以讓你強烈地鍵入查詢做到這一點,但返回字符串.Result這是從elasticsearch作爲字符串添加到

request原始響應可是一個對象或字符串,所以如果你可以用內部json序列化只是直接傳遞searchDescriptor

+1

謝謝有什麼方法可以用自定義的替換json.net序列化程序impl嗎? (讓我們說服務棧) –

+0

@Martijn有沒有一種方法可視化發送之前發送的查詢? – Dema

+0

result.Result似乎不存在於當前API中。這是如何實現的?我想通過彈性搜索服務器響應直接傳遞給我的客戶端,因爲客戶端使用JavaScript庫來處理標準ES響應以進行分面等。謝謝。 – richardwhatever