下面是我用同一份数据,查询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;
}