自从我的Nest客户端升级到2.2.1后,我无法看到我提交给我的弹性搜索客户端(现在的版本2.3.0)的查询。 我曾经使用过这一行:
string searchJson = Encoding.UTF8.GetString(client.Serializer.Serialize(myQueryHere));
但是这个方法现在返回void而不是它以前使用的JSON。 ConnectionStatus也不存在所以我再也看不到我发送的json了,有没有人知道某种方式? CallDetails.RequestBodyInBytes可用,但返回null。
答案 0 :(得分:7)
Take a look at the documentation for NEST 2.x on Connecting。 CallDetails.RequestBodyInBytes
将null
,除非您在.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());