在ElasticSearch NEST查询中返回Raw Json

时间:2013-12-23 22:15:26

标签: elasticsearch servicestack json.net nest

我正在对.net中的弹性搜索客户进行一项小型研究,我发现NEST是此问题最受支持的解决方案之一。

我正在查看Nest的文档,我找不到从查询中输出原始json并避免序列化为对象的方法,因为我在前端使用angularJs我不想超载通过一些不必要的步骤将信息发送给客户的过程。

......而且我想知道我怎样才能超越序列化过程?

我发现NEST使用Json.NET,我想为servicestack json serielizer更改。

谢谢!

2 个答案:

答案 0 :(得分: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(即弹性搜索的原始响应作为字符串返回到

request可以是一个对象或字符串,所以如果你对内部json序列化没问题,只需直接传递searchDescriptor

答案 1 :(得分:0)

使用RequestResponseSerializer而不是Serializer。

var searchDescriptor = ...;
...
byte[] b = new byte[60000];
using (MemoryStream ms = new MemoryStream(b))
{
    this._client.RequestResponseSerializer.Serialize(searchDescriptor , ms);
}
var rawJson = System.Text.Encoding.Default.GetString(b);