ElasticSearch C# Elasticsearch.Net 获取原始ES查询JSON

我们C# 中使用 Elasticsearch.Net  ,nest 连接ES操作数据的时候,想要获取Elasticsearch.Net.dll 发给 es 的请求json数据有两种方式。

1、创建客户端的时候 加上 DisableDirectStreaming 方法,但是如果一直开启会损耗性能。

  var settings = new ConnectionSettings(pool).DisableDirectStreaming().RequestTimeout(TimeSpan.FromSeconds(30));

加上之后,正常发起对ES的请求,然后再结果里面有个属性DebugInformation,位置在((Elasticsearch.Net.ApiCallDetails)((Elasticsearch.Net.IElasticsearchResponse)aaa).ApiCall).DebugInformation,就能看到请求和输出的json后的数据了。

 

 

  然后在 DebugInformation里面就能看到l

 

2、使用 ElasticClient.RequestResponseSerializer()

  
 Func<SearchDescriptor<Test>, ISearchRequest> selector = r => r.Query(q => q.Bool(boolQuery)).Aggregations(a => a.Terms("categoryIds", c => c.Field(p => p.CatetoryID))).Size(0);

 var requestJson= _client.RequestResponseSerializer.SerializeToString(selector.Invoke(new SearchDescriptor<Test> ()));

  

 

posted @ 2022-04-25 14:06  codenoting  阅读(852)  评论(0)    收藏  举报