从Nest客户端弹性搜索2.3序列化查询

zap*_*ppa 7 elasticsearch nest

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

string searchJson = Encoding.UTF8.GetString(client.Serializer.Serialize(myQueryHere));  
Run Code Online (Sandbox Code Playgroud)

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

Rus*_*Cam 7

查看NEST 2.x关于连接的文档.CallDetails.RequestBodyInBytesnull除非你设置.DisableDirectStreaming()ConnectionSettings传递给的构造函数ElasticClient

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

var client = new ElasticClient(settings);
Run Code Online (Sandbox Code Playgroud)

现在,请求和响应字节的副本将在响应CallDetails上公开

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

var requestJson = Encoding.UTF8.GetString(response.CallDetails.RequestBodyInBytes);
var responseJson = Encoding.UTF8.GetString(response.CallDetails.ResponseBodyInBytes);
Run Code Online (Sandbox Code Playgroud)

虽然开发它可能有助于注销所有请求和响应.

  • 是的,将您的请求传递给`client.Serializer.SerializeToString(request);`用于json字符串或`client.Serializer.SerializeToBytes(request)`用于字节数组 (3认同)
  • 请注意,`SerializeToString`和`SerializeToBytes`是扩展方法,你需要一个`使用Elasticsearch.Net;` (3认同)