从Nest 6.4.2的Get API调用中获取可在Kibana复用的原始请求
解决Nest 6.4.2获取Get API原始请求用于Kibana复现的问题
问题根源
你当前代码获取的是响应体(ResponseBodyInBytes),但要在Kibana复现查询需要的是请求的原始内容;另外Nest默认不会保留请求字节流,必须显式配置才能获取。
解决步骤
配置ElasticClient以保留请求字节
创建客户端时必须启用DisableDirectStreaming(),否则ApiCall不会存储请求原始数据:var settings = new ConnectionSettings(new Uri("http://你的Elasticsearch地址:9200")) .DisableDirectStreaming() // 核心配置:启用后保留请求/响应的原始字节 .DefaultIndex(this.configurationProxy.ConfigurationObject.ElasticIndex); var elasticClient = new ElasticClient(settings);获取Get请求的原始内容
执行Get调用后,从响应的ApiCall中读取RequestInBytes(而非ResponseBodyInBytes):var response = elasticClient.Get<MyPoco>(guid, i => i.Index(this.configurationProxy.ConfigurationObject.ElasticIndex)); var rawRequest = Encoding.UTF8.GetString(response.ApiCall.RequestInBytes);转换为Kibana可复用的查询
Nest的Get API对应Elasticsearch的GET /{index}/_doc/{id}接口,本身无请求体(仅通过ID查询)。要在Kibana复现:- 在Discover或Visualize中使用term查询:
{ "query": { "term": { "_id": "你的GUID值" } } } - 在Dev Tools中直接执行原始REST请求:
GET /你的索引名/_doc/你的GUID值
- 在Discover或Visualize中使用term查询:
内容的提问来源于stack exchange,提问作者Trank
相关产品推荐
相关产品推荐

