下面是我用同一份数据,查询ES,推到kafka,导入kylin,导入的数据量一样,使用的cube设置是一样的
结果得到的统计数据竟然不一样,当时简直是哔了狗了
第一张查询ES时候是没有排序,第二张查询是按时间排序,按时间排序的统计结果才是正确的。
照理说,我导入KAFKA的数据都是一样的,kylin两次统计的数据都是同一份,结果应该是一样。想不明白!!!!
这份代码是排序的查询条件的代码,注释掉的是没有排序的查询条件:
private Page<ESAmazonTop50AsinStatistics> getData(int page, int size) throws ParseException { String startTime = TomtopDateUtil.beforeXDayZero(new Date(), this.beforeXDay).getTime() / 1000 + ""; String endTime = TomtopDateUtil.beforeXDayZero(new Date(), this.beforeXDay - 1).getTime() / 1000 + ""; Pageable pageable = new PageRequest(page, size); SortBuilder sortBuilder = SortBuilders.fieldSort("createTime").order( SortOrder.DESC); QueryBuilder queryTime = QueryBuilders.boolQuery().must( QueryBuilders.rangeQuery("createTime").gte(startTime) .lt(endTime)); NativeSearchQueryBuilder build = new NativeSearchQueryBuilder() .withFilter(queryTime).withSort(sortBuilder) .withPageable(pageable); SearchQuery searchQuery = build.build(); Page<ESAmazonTop50AsinStatistics> trackPage = eSAmazonTopAsinStatisticsRepository.search(searchQuery); // QueryBuilder queryTime = QueryBuilders.boolQuery().must( // QueryBuilders.rangeQuery("createTime").gte(startTime) // .lt(endTime)); // Page<ESAmazonTop50AsinStatistics> trackPage = eSAmazonTopAsinStatisticsRepository // .search(queryTime, pageable); return trackPage; }