从Nest客户端弹性搜索2.3

时间:2016-04-11 14:34:44

标签: elasticsearch nest

自从我的Nest客户端升级到2.2.1后,我无法看到我提交给我的弹性搜索客户端(现在的版本2.3.0)的查询。 我曾经使用过这一行:

string searchJson = Encoding.UTF8.GetString(client.Serializer.Serialize(myQueryHere));  

但是这个方法现在返回void而不是它以前使用的JSON。 ConnectionStatus也不存在所以我再也看不到我发送的json了,有没有人知道某种方式? CallDetails.RequestBodyInBytes可用,但返回null。

2 个答案:

答案 0 :(得分:7)

Take a look at the documentation for NEST 2.x on ConnectingCallDetails.RequestBodyInBytesnull,除非您在.DisableDirectStreaming()上设置ConnectionSettings传递给ElasticClient的构造函数

var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));  
var settings = new ConnectionSettings(connectionPool) 
    .DisableDirectStreaming();

var client = new ElasticClient(settings);

现在请求和响应字节的副本将在响应CallDetails

上公开
var response = client.Search<Document>();

var requestJson = Encoding.UTF8.GetString(response.CallDetails.RequestBodyInBytes);
var responseJson = Encoding.UTF8.GetString(response.CallDetails.ResponseBodyInBytes);

Whilst developing it may be useful to log out all requests and responses

答案 1 :(得分:1)

Serialize方法现在需要stream,它将在其上编写原始json查询 - 正确运行Nest 5.3.0:

        var stream = new System.IO.MemoryStream();
        nestClient.Serializer.Serialize(query, stream);
        var jsonQuery = System.Text.Encoding.UTF8.GetString(stream.ToArray());
相关问题