当前位置: 首页 > article >正文

java查询es超过10000条数据

java查询es超过10000条数据

背景:需要每天零点导出es中日志数据到数据库中给数据分析人员做清洗,然后展示给业务人员。但在es中默认一次最多只能查询10000条数据。
在这里我就只贴一下关键代码

SearchRequest searchRequest = new SearchRequest("索引名");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        //时间字段
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("logdate")
                .from("2025-03-20 00:00") // 设置开始时间
                .to("2025-03-20 23:00")         // 设置结束时间
                .format("yyyy-MM-dd HH:mm")    //设置时间格式
                .includeLower(true)            // 包含起始时间点
                .includeUpper(false);          // 不包含结束时间点
searchSourceBuilder.query(rangeQuery);
searchSourceBuilder.size(1000); //每批次大小
SortBuilder sortBuilder = SortBuilders.fieldSort("logDate").order(SortOrder.ASC);
searchSourceBuilder.sort(sortBuilder);        searchSourceBuilder.sort(SortBuilders.fieldSort("_id").order(SortOrder.ASC));
Object[] searchAfter = null;
do {
       if (searchAfter != null){
             searchSourceBuilder.searchAfter(searchAfter);
        }
       searchRequest.source(searchSourceBuilder);
       SearchResponse search = null;
       try {
            search = client.search(searchRequest, RequestOptions.DEFAULT);
       } catch (IOException e) {
            throw new RuntimeException(e);
       }
        SearchHit[] hits = search.getHits().getHits();
         if (hits.length==0){
              break;
          }
        for (SearchHit hit : hits) {
                System.out.println(hit.getSourceAsString());
         }
            //获取最后一个文档的排序值
            searchAfter = hits[hits.length-1].getSortValues();
        }while (searchAfter != null);
        System.out.println("总共查询到 "+i+" 条数据");
    }

上面这段代码的本质就是用的分页查询
所用es相关依赖为

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            <version>2.5.14</version>
        </dependency>

es客户端为RestHighLevelClient


http://www.kler.cn/a/595952.html

相关文章:

  • VS代码生成工具ReSharper v2024.3——支持C# 13
  • Redis-分布式锁实现秒杀
  • 通过 TTL 识别操作系统的原理详解
  • 【leetcode hot 100 39】组合总和
  • leetcode每日一题:最大或值
  • 发现一个好用的Vue.js内置组件
  • Bitcoin Thunderbolt 内测通道开启,加速比特币交易新时代
  • 大数据从入门到入魔系列————探索大数据前世今生之迷
  • 快速入手-基于Django的mysql操作(四)
  • stressapptest交叉编译(ARM64)
  • 批量删除 PPT 文档中的宏
  • D-Wave专用量子计算机登顶Science 率先展示在真实场景中的量子优势(内附下载)
  • 阿里云国际站代理商:如何延长服务器硬盘寿命?
  • 七天免登录 为什么不能用seesion,客户端的http请求自动携带cookei的机制(比较重要)涉及HTTP规范
  • 【数据结构】栈与队列:基础 + 竞赛高频算法实操(含代码实现)
  • 数组模拟邻接表 #图论
  • DeepBI:重构流量逻辑,助力亚马逊广告实现高效流量增长
  • 算法竞赛备赛——【数据结构】链表
  • 村民信息管理系统
  • WRF移动嵌套结合伏羲模型与CFD(PALM)高精度多尺度降尺度分析研究