SpringBoot—根据起始时间和终止时间获取ES索引名称范围
关注 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索引名称范围相关推荐
- JS 获取合同的起始时间与终止时间------日期增加自然月,年。
需求: 在线签订电子合同: 获取合同的起始时间与终止时间,以用户点击签约为起始时间,计算用户在页面中选择的合约生效时长(可选6个月.1年等等)并推算出终止时间: 实现难点: 可能存在大月小月以及平年闰 ...
- JS计算请假时间(起始时间与终止时间)
正常上班时间为周一至周五 9:00 -12:00,13:00-18:00,实现了选择了请假起始时间与终止时间后,算出请假的总小时数,此总小时数扣除了非上班时间(周末,还有一天中的非上班时间:如午休的那 ...
- JS计算请假时间(起始时间与终止时间可跨月)
正常上班时间为周一至周五 8:30 -12:00,13:30-18:00,实现了选择了请假起始时间与终止时间后,算出请假的总小时数,此总小时数扣除了非上班时间(周末,还有一天中的非上班时间:如午休的那 ...
- 然后是几点:根据起始时间和流逝的时间计算出终止时间(起始时间和终止时间不一定在同一天内)
今日PTA题目: 有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以这样的四位数字表示当前 ...
- 有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字
有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表 ...
- 7-2 然后是几点 (15 分)有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样
输入格式: 输入在一行中给出 2 个整数,分别是四位数字表示的起始时间.以及流逝的分钟数,其间以空格分隔.注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530:0 点 ...
- PHP获取时间戳、获取天周月的起始时间、指定时间所在周、指定时间的各个周等相关函数
目录 一.时间戳和日期互相转换 二.PHP获取今日.昨日.上周.本周.上月.本月的起始时间戳 三.获取当前周的每天的起始时间 四.获取周的起始时间 1.根据指定时间获取所在周的起始时间和结束时间 2. ...
- pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有周末日期(weekends day)
pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有周末日期(weekends day) #pandas使用bdate_range函数获取起始时间(st ...
- pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day)
pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day) #pandas使用bdate_range函数获取起始时间(s ...
最新文章
- IDC_EDIT控件输入数字改变IDC_SCROLLBAR滑块位置
- (转)利用快速开发框架,快速搭建微信浏览博客园首页文章
- 着眼未来!2019未来杯高校AI挑战赛圆满落幕
- ASP.NET页面级别的事务
- 和vs版本关系_栈局部变量优化探究,意外发现了 vs 的一个 bug ?
- 微服务主见传递ID还是json_Feign实现微服务间文件传递
- centos 访问网页重启php_php项目上线基于docker运行php+源码编译实现Nginx+阿里云RDS连接实现...
- 很好的一款监控web请求的工具,fiddler.
- 20191115英文每日一句
- 安装MongoDB时弹窗错误,使用时无法启动服务器
- 直播技术原理:CDN技术详解
- 数字人民币渐行渐近丨2021中国区块链产业发展报告
- python滑稽脸_使用python的turtle绘画滑稽脸实例
- 如何更好的使用谷歌搜索引擎
- Fibonacci数列Linux程序,使用fork()调用计算Fibonacci数列
- 金融牌照之基金销售、基金支付、基金管理牌照简析
- Java面试之多线程:Java创建多线程为什么只有一种方式?
- matlab多重积分编程,多重积分的MATLAB实现.pdf
- Unity3d:一个简单的画圈圈手势判断
- GoLand ide编辑器设置方法注释模板(例如author,date)