public ApiDetailLogResp getApiLogsService(ApiDetailResp req) throws IOException {
//填写ip、端口
HttpHost host = new HttpHost(hostName, port, HttpHost.DEFAULT_SCHEME_NAME);
RestClientBuilder builder = RestClient.builder(host);
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
//配置用户名、密码
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, passWord));
builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider));
RestHighLevelClient client = new RestHighLevelClient(builder);
//服务索引
SearchRequest searchRequest = new SearchRequest(indexByRequest);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//根据某个字段、某个值匹配
searchSourceBuilder.query(QueryBuilders.matchQuery("xrid", req.getRequestId()));
//创建string数组,配置想要查询的字段
String[] includes = {"request_body","response_body"};
String[] excludes = {};
searchSourceBuilder.fetchSource(includes, excludes);
//构建好的条件和查询对象
SearchRequest source = searchRequest.source(searchSourceBuilder);
//回调
SearchResponse search = client.search(source,RequestOptions.DEFAULT);
SearchHits hits = search.getHits()
//获取击中的值
SearchHit[] hits1 = hits.getHits();
ApiDetailLogResp apiDetailLogResp=new ApiDetailLogResp();
for (SearchHit hit : hits1) {
JSONObject jsonObject = JSONObject.parseObject(hit.getSourceAsString());
apiDetailLogResp.setRequestBody((String)jsonObject.get("request_body"));
apiDetailLogResp.setResponseBody((String)jsonObject.get("response_body"));
//网关索引
SearchRequest searchRequestGw = new SearchRequest(indexByGw);
SearchSourceBuilder searchSourceBuilder1 = new SearchSourceBuilder();
searchSourceBuilder1.query(QueryBuilders.matchQuery("xrid", req.getRequestId()));
String[] includes1 = {"request_body","response_body","request_time","response_time"};
String[] excludes1 = {};
searchSourceBuilder1.fetchSource(includes1, excludes1);
//构建好的条件和查询对象
SearchRequest source1 = searchRequestGw.source(searchSourceBuilder1);
//回调
SearchResponse search1 = client.search(source1,RequestOptions.DEFAULT);
SearchHits hits2 = search1.getHits();
SearchHit[] hits3 = hits2.getHits();
for (SearchHit hit1 : hits3) {
JSONObject jsonObject = JSONObject.parseObject(hit1.getSourceAsString());
apiDetailLogResp.setGwRequestBody((String) jsonObject.get("request_body"));
apiDetailLogResp.setGwResponseBody((String) jsonObject.get("response_body"));
apiDetailLogResp.setGwRequestTime(((String)jsonObject.get("request_time"))==null?null:((String)jsonObject.get("request_time")).substring(20));
apiDetailLogResp.setGwResponseTime(((String)jsonObject.get("response_time"))==null?null:((String)jsonObject.get("response_time")).substring(20));
}
client.close();
return apiDetailLogResp;
}
java通过es查询索引中存储的某个固定字段的值
最新推荐文章于 2024-05-02 17:02:43 发布