java通过es查询索引中存储的某个固定字段的值

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;
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tuple_Margin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值