码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ES使用游标查询数据


    1. // 统计查询
    2. CountRequest countRequest = new CountRequest();
    3. countRequest.types("类型,按照版本进行使用");
    4. countRequest.indices("索引");
    5. // 构建查询参数
    6. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    7. // 设置统计查询参数
    8. countRequest.source(searchSourceBuilder);
    9. // 统计数量
    10. CountResponse countResponse = restHighLevelClient.count(countRequest,RequestOptions.DEFAULT);
    11. // 获取数量
    12. long count = countResponse.getCount();
    13. if(count > 500000){
    14. throw new RumtimeException("下载数量不允许超过50W");
    15. }
    16. // 数量大于1W条时使用scroll进行下载数据
    17. if (count > 10000) {
    18. searchSourceBuilder.size(10000);
    19. SearchRequest searchRequest = new SearchRequest("索引").types("类型,按版本判断是否使用");
    20. searchRequest.source(searchSourceBuilder);
    21. // 创建游标并设置过期时间
    22. Scroll scroll = new Scroll(TimeValue.timeValueMinutes(5L));
    23. // 设定游标
    24. searchRequest.scroll(scroll);
    25. // 执行查询,获取响应数据和游标ID
    26. SearchResponse searchResponse = restHighLevelClient.search(request, RequestOptions.DEFAULT);
    27. String scrollId = searchResponse.getScrollId();
    28. SearchHit[] searchHits = searchResponse.getHits().getHits();
    29. // 收集数据集合
    30. List searchHitList = new ArrayList<>(Arrays.asList(searchHits));
    31. while (true) {
    32. if (searchHits.length == 0) {
    33. break;
    34. }
    35. // 创建游标查询请求
    36. SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
    37. // 设定游标时长
    38. scrollRequest.scroll(scroll);
    39. // 使用游标进行查询
    40. searchResponse = restHighLevelClient.scroll(searchScrollRequest, RequestOptions.DEFAULT);
    41. // 获取游标ID
    42. scrollId = searchResponse.getScrollId();
    43. // 获取数据
    44. searchHits = searchResponse.getHits().getHits();
    45. searchHitList.addAll(Arrays.asList(searchHits));
    46. }
    47. // 清除游标ID
    48. ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
    49. clearScrollRequest.addScrollId(scrollId);
    50. restHighLevelClient.clearScroll(clearScrollRequest,RequestOptions.DEFAULT);
    51. // TODO process 处理逻辑
    52. return;
    53. }

  • 相关阅读:
    基于Java的在线考试系统(附:源码和课件)
    【Webpack】提升开发体验 - SourceMap 的使用
    第二十一章《万年历》第1节:万年历项目简介
    【JAVA并发】二、JAVA是如何解决并发问题的
    MAC中文版 FCPX V10.6.6 专属视频剪辑后期工具安装教程
    二维多孔介质图像的粒度分布研究(Matlab代码实现)
    LeetCode 2810.故障键盘
    C/C++计算表达式值 2020年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
    全网首发!消息中间件神仙笔记,涵盖阿里十年技术精髓
    RocketMQ —消费进度管理
  • 原文地址:https://blog.csdn.net/now19930616/article/details/134526700
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号