es java api 查询_es7.3.1-java api 查询

这段代码展示了如何使用Elasticsearch的BoolQueryBuilder进行范围查询,并通过scroll API处理大量数据。它首先构建了一个查询来筛选特定时间段内的`request_time`,然后获取并处理搜索结果,通过循环调用scroll API来遍历所有匹配的文档。在完成数据处理后,还清理了滚动上下文。
摘要由CSDN通过智能技术生成

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery("request_time").gte(startTime).lt(endTime));

String[] includes = new String[]{""};

SearchResponse response = getResponse(es_index_ss_cardresponse_operate, boolQueryBuilder, includes,

null, 10000);

if (null != response) {

SearchHit[] searchHit = response.getHits().getHits();

cfEsResHandleService.quota12(numArr, searchHit, tableList, toKafka);

String scrollId = response.getScrollId();

while (null != searchHit && searchHit.length > 0) {

response = getResponse(es_index_ss_cardresponse_operate, null, includes,

scrollId, 10000);

searchHit = response.getHits().getHits();

cfEsResHandleService.quota12(numArr, searchHit, tableList, toKafka);

}

//清除滚屏

boolean success = clearScroll(scrollId);

if (success) {

LOGGER.info("清除滚屏成功!");

} else {

LOGGER.info("清除滚屏失败!");

}

}

/**

* 获取es查询结果

*

* @param esIndex

* @param boolQueryBuilder

* @param scrollId

* @param size

* @return

*/

public SearchResponse getResponse(String esIndex, BoolQueryBuilder boolQueryBuilder, String[] includes, String

scrollId, int size) {

SearchResponse response = null;

try {

RestHighLevelClient restHighLevelClient = esClient.getClient();

if (null != boolQueryBuilder && null == scrollId) {

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

searchSourceBuilder.query(boolQueryBuilder);

searchSourceBuilder.explain(false);//大于查询结果不打分

searchSourceBuilder.size(size);

//传了查询过滤字段才过滤结果,否则取全部字段

if (null != includes && includes.length > 0) {

//设置要获取的字段和不要获取的字段

searchSourceBuilder.fetchSource(includes, new String[]{});

}

SearchRequest searchRequest = new SearchRequest().indices(esIndex + "_" + index_suffix).source(searchSourceBuilder);

//size 为0不能使用scroll,否则会抛异常

if (size != 0) {

searchRequest.scroll(TimeValue.MINUS_ONE);

}

response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

}

if (null == boolQueryBuilder && null != scrollId) {

SearchScrollRequest searchScrollRequest = new SearchScrollRequest(scrollId).scroll(TimeValue.MINUS_ONE);

response = restHighLevelClient.scroll(searchScrollRequest, RequestOptions.DEFAULT);

}

} catch (IOException e) {

e.printStackTrace();

return null;

}

return response;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu 是一个编译器工具链,用于支持在x86_64平台上交叉编译aarch64架构的程序。它采用Linaro团队开发的GCC 7.3.1版本,是一个开源的C/C++编译器。该工具链提供了一系列的命令行工具,包括编译器、链接器和调试器等,用于将源代码转换成可执行的二进制文件。 在嵌入式系统和嵌入式Linux开发中,交叉编译器是必不可少的工具之一。由于不同平台的硬件架构差异较大,以及开发环境和目标环境的不同,直接在我们的开发机上编译目标平台的程序是不可行的。因此,需要使用交叉编译器,将源代码在开发机上编译成适用于目标平台的二进制文件。gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu 就是为了支持在x86_64平台上编译aarch64架构的程序而设计的工具链。 使用这个工具链,我们可以在x86_64平台上使用GCC编译器来编译适用于aarch64架构的程序。这对于嵌入式开发和Linux内核开发非常有用。通过使用该工具链,开发人员可以更方便地进行交叉编译,提高开发效率,并且确保生成的可执行文件在目标平台上能够正确运行。 总之,gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu 是一个用于在x86_64平台上交叉编译aarch64架构程序的工具链。它提供了GCC编译器和其他一系列命令行工具,用于将源代码转换成可在目标平台上运行的二进制文件。在嵌入式系统和嵌入式Linux开发中,这个工具链非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值