美文网首页Elasticsearch
ES查询一段时间内某一循环时间段的数据

ES查询一段时间内某一循环时间段的数据

作者: 达微 | 来源:发表于2018-06-02 14:59 被阅读10次

    业务需求:查询几个月类每天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+"\"}}";

        }

    static public StringscriptQueryByTime2(String startTime, String endTime ){

    if(StringUtils.isBlank(startTime)||StringUtils.isBlank(endTime)){

    return null;

            }

    if(startTime.length()==4){

    startTime=startTime+"00";

            }

    if(endTime.length()==4){

    endTime=endTime+"00";

            }

    int start = Integer.valueOf(startTime.replace(":",""));

            int end = Integer.valueOf(endTime.replace(":",""));

            return rangeGteAndLte("timenum",start,end);

        }

    相关文章

      网友评论

        本文标题:ES查询一段时间内某一循环时间段的数据

        本文链接:https://www.haomeiwen.com/subject/ecsrsftx.html