业务需求:查询几个月类每天8点到10点的数据
最开始基于date类型,用painless脚本实现,用profile跟了下效率感觉不是很好,就冗余了个字段做range过滤,也一般,lucence了解的不是很深入,不知道有没有基于时间戳更好的实现,单独列出来备注下,后期看看是否有更好的实现
static public StringscriptQueryByTime(String startTime, String endTime ){
if(StringUtils.isBlank(startTime)||StringUtils.isBlank(endTime)){
return null;
}
int start = Integer.valueOf(startTime.replace(":",""));
int end = Integer.valueOf(endTime.replace(":",""));
String source ="int hour = doc[pass_time].date.hourOfDay;int minute = doc[pass_time].date.minuteOfHour;int flag=hour*100+minute; flag>="+start+"&&flag <="+end+" ";
return "{\"script\":{\"script\":\""+source+"\"}}";