1.需求:job跑批每隔5分钟查询es数据取出并进行推送。
问题:原使用java分页查询es。当大于1w时无法取出后续数据造成了数据丢失。 使用scroll_id查询性能消耗太大不适应此场景.
es调用测试:
获取第一次查询结果后设置sort,
查询首条数据为
转换成java实现方式如下:
BillTraceElasticSearchRepository
findInfoDocByScroll
public Map<Object[],List<BillTraceElasticSearchDocument>> findInfoDocByScroll(BillTraceSearchVo billTraceSearchVo,Object[] sort) {
List<BillTraceElasticSearchDocument> result = new ArrayList<>();
Map<Object[],List<BillTraceElasticSearchDocument>> resultInfo=new HashMap<>();
try {
if(null == billTraceSearchVo){
return null;
}
//查询请求对象
SearchRequestBuilder srb = baseQuery(BillTraceElasticSearchDocument.class);
//查询条件
BoolQueryBuilder bqb = QueryBuilders.boolQuery();
// 添加时间范围查询
if(null != billTraceSearchVo.getStartTime()
&& null != billTraceSearchVo.getEndTime()
&& billTraceSearchVo.getEndTime() > billTraceSearchVo.getStartTime()){