关注 wx:CodingTechWork

需求

  根据ES的起始时间字段,查询索引名称范围。前提,索引名称也是按照年月来命名,如es_log_data_m202304

模板

@Slf4j
public class ESUtils{private Integer defaultSearchMonth = 6;/*** 根据起始时间和终止时间获取索引名称范围** @param indexNamePrefix 索引前缀* @param beginTime       起始时间* @param endTime         终止时间* @return*/public static List<String> queryEsIndexNameRange(String indexNamePrefix, LocalDateTime beginTime, LocalDateTime endTime) {//构建日期字符串列表  yyyyMMList<String> indexNameRangeList = new ArrayList<>();//设定了起止时间if (ObjectUtil.isNotEmpty(beginTime) && ObjectUtil.isNotEmpty(endTime)) {//若起始时间在终止时间之后,返回空if (beginTime.isAfter(endTime)) {return new ArrayList<>();}//循环处理 条件:起始时间在终止时间之前while (beginTime.isBefore(endTime)) {//添加起始日期indexNameRangeList.add(indexNamePrefix + DateTimeFormatter.ofPattern("yyyyMM").format(beginTime));//自增1个月beginTime = beginTime.plusMonths(1);}//考虑2023-02-01 00:00:00  2023-03-03 00:00:00时间范围的查询if (!indexNameRangeList.contains(indexNamePrefix + DateTimeFormatter.ofPattern("yyyyMM").format(endTime))) {//添加终止日期indexNameRangeList.add(indexNamePrefix + DateTimeFormatter.ofPattern("yyyyMM").format(endTime));}} else {//未设定起止时间,默认返回几个月LocalDateTime nowTime = LocalDateTime.now();//循环处理 条件:起始时间在终止时间之前的默认月数for (int i = 0; i < defaultSearchMonth; i++) {indexNameRangeList.add(indexNamePrefix + DateTimeFormatter.ofPattern("yyyyMM").format(nowTime));//自减月份nowTime = nowTime.minusMonths(1);}}log.info("es query indexNameRangeList: {}", indexNameRangeList);//返回索引范围listreturn indexNameRangeList;}
}

示例

 //索引名称查询列表
List<String> indexNameList = ESUtils.getIndexNameRange("es_log_data_m,LocalDateTime.now(), LocalDateTime.now());
//构建es请求
SearchRequest.Builder builder = new SearchRequest.Builder();
//es query
Query.Builder builder = new Query.Builder();
BoolQuery.Builder boolQueryBuilder = new BoolQuery.Builder();
builder.bool(boolQueryBuilder.build());
Query.Builder builderId = new Query.Builder();
builderId.term(new TermQuery.Builder().field("testId").value(10000L).build());
boolQueryBuilder.must(builderId.build());
//忽略索引不存在的情况
builder.index(indexNameList).query(builder.build()).ignoreUnavailable(true);

SpringBoot—根据起始时间和终止时间获取ES索引名称范围相关推荐

  1. JS 获取合同的起始时间与终止时间------日期增加自然月,年。

    需求: 在线签订电子合同: 获取合同的起始时间与终止时间,以用户点击签约为起始时间,计算用户在页面中选择的合约生效时长(可选6个月.1年等等)并推算出终止时间: 实现难点: 可能存在大月小月以及平年闰 ...

  2. JS计算请假时间(起始时间与终止时间)

    正常上班时间为周一至周五 9:00 -12:00,13:00-18:00,实现了选择了请假起始时间与终止时间后,算出请假的总小时数,此总小时数扣除了非上班时间(周末,还有一天中的非上班时间:如午休的那 ...

  3. JS计算请假时间(起始时间与终止时间可跨月)

    正常上班时间为周一至周五 8:30 -12:00,13:30-18:00,实现了选择了请假起始时间与终止时间后,算出请假的总小时数,此总小时数扣除了非上班时间(周末,还有一天中的非上班时间:如午休的那 ...

  4. 然后是几点:根据起始时间和流逝的时间计算出终止时间(起始时间和终止时间不一定在同一天内)

    今日PTA题目: 有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以这样的四位数字表示当前 ...

  5. 有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字

    有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表 ...

  6. 7-2 然后是几点 (15 分)有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样

    输入格式: 输入在一行中给出 2 个整数,分别是四位数字表示的起始时间.以及流逝的分钟数,其间以空格分隔.注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530:0 点 ...

  7. PHP获取时间戳、获取天周月的起始时间、指定时间所在周、指定时间的各个周等相关函数

    目录 一.时间戳和日期互相转换 二.PHP获取今日.昨日.上周.本周.上月.本月的起始时间戳 三.获取当前周的每天的起始时间 四.获取周的起始时间 1.根据指定时间获取所在周的起始时间和结束时间 2. ...

  8. pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有周末日期(weekends day)

    pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有周末日期(weekends day) #pandas使用bdate_range函数获取起始时间(st ...

  9. pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day)

    pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day) #pandas使用bdate_range函数获取起始时间(s ...

最新文章

  1. IDC_EDIT控件输入数字改变IDC_SCROLLBAR滑块位置
  2. (转)利用快速开发框架,快速搭建微信浏览博客园首页文章
  3. 着眼未来!2019未来杯高校AI挑战赛圆满落幕
  4. ASP.NET页面级别的事务
  5. 和vs版本关系_栈局部变量优化探究,意外发现了 vs 的一个 bug ?
  6. 微服务主见传递ID还是json_Feign实现微服务间文件传递
  7. centos 访问网页重启php_php项目上线基于docker运行php+源码编译实现Nginx+阿里云RDS连接实现...
  8. 很好的一款监控web请求的工具,fiddler.
  9. 20191115英文每日一句
  10. 安装MongoDB时弹窗错误,使用时无法启动服务器
  11. 直播技术原理:CDN技术详解
  12. 数字人民币渐行渐近丨2021中国区块链产业发展报告
  13. python滑稽脸_使用python的turtle绘画滑稽脸实例
  14. 如何更好的使用谷歌搜索引擎
  15. Fibonacci数列Linux程序,使用fork()调用计算Fibonacci数列
  16. 金融牌照之基金销售、基金支付、基金管理牌照简析
  17. Java面试之多线程:Java创建多线程为什么只有一种方式?
  18. matlab多重积分编程,多重积分的MATLAB实现.pdf
  19. Unity3d:一个简单的画圈圈手势判断
  20. GoLand ide编辑器设置方法注释模板(例如author,date)

热门文章

  1. Python数据分析常用函数及参数详解,可以留着以备不时之需
  2. 重载和实现对象的相减和相除)
  3. riscv-sodor 学习笔记
  4. 第六章 差分方程与代数方程模型
  5. 两种点云分割(一)— RANSAC分割平面
  6. Mixin 函数的详细解析
  7. JSR303和jso
  8. 【高级篇 / ZTNA】(7.0) ❀ 04. FortiClient 下载与安装 ❀ FortiGate 防火墙
  9. RecyclerView 教程,全面了解各种使用方法
  10. Python系列 18 深浅拷贝