ElasticSearch From-Size分页案例

1.定义from-size检索的dsl

定义from-size检索的dsl,里面包含外部需要传入的检索条件参数变量和分页参数变量:

2.加载dsl所在配置文件,并执行from-size分页检索

  1. * 分页检索文档
  2. * @throws ParseException
  3. */
  4. public void testPagineSearch() throws ParseException {
  5. //创建加载配置文件的客户端工具,用来检索文档,单实例多线程安全
  6. ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/demo.xml");
  7. //设定查询条件,通过map传递变量参数值,key对于dsl中的变量名称
  8. //dsl中有四个变量
  9. // applicationName1
  10. // applicationName2
  11. // startTime
  12. // endTime
  13. Map<String,Object> params = new HashMap<String,Object>();
  14. params.put("applicationName1","blackcatdemo2");
  15. params.put("applicationName2","blackcatdemo3");
  16. //设置时间范围,时间参数接受long值
  17. params.put("startTime",dateFormat.parse("2017-09-02 00:00:00"));
  18. params.put("endTime",new Date());
  19. ESDatas<Demo> esDatas = null;//返回的文档封装对象类型
  20. //保存总记录数
  21. long totalSize = 0;
  22. //保存每页结果对象列表,最多返回1000条记录
  23. List<Demo> demos = null;
  24. int i = 0; //页码
  25. do{//遍历获取每页的记录
  26. //设置分页参数
  27. params.put("from",i * 1000);//分页起点
  28. params.put("size",1000);//每页返回1000条
  29. i ++;//往前加页码
  30. clientUtil.searchList("demo/_search",//demo为索引表,_search为检索操作action
  31. "searchPagineDatas",//esmapper/demo.xml中定义的dsl语句
  32. params,//变量参数
  33. Demo.class);//返回的文档封装对象类型
  34. demos = esDatas.getDatas();//每页结果对象列表,最多返回1000条记录
  35. totalSize = esDatas.getTotalSize();//总记录数
  36. if(i * 1000 > totalSize)
  37. break;
  38. }while(true);
  39. // String json = clientUtil.executeRequest("demo/_search",//demo为索引表,_search为检索操作action
  40. // "searchDatas",//esmapper/demo.xml中定义的dsl语句
  41. // params);
  42. // String json = com.frameworkset.util.SimpleStringUtil.object2json(demos);

3.完整的demo实例工程

4 开发交流

elasticsearch微信公众号: