全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
开放搜索

scroll迭代查询Demo

更新时间:2017-09-06 16:39:55

V3.1.2 SDK Scroll迭代方式搜索文档样例代码

该Scroll迭代方式,省去了反复设置scrollID的操作。(scroll查询方法,目前不支持sort子句

  1. package com.aliyun.opensearch;
  2. import com.aliyun.opensearch.sdk.dependencies.com.google.common.collect.Lists;
  3. import com.aliyun.opensearch.sdk.generated.OpenSearch;
  4. import com.aliyun.opensearch.sdk.generated.search.*;
  5. import com.aliyun.opensearch.search.DeepPageingIterator;
  6. import java.nio.charset.Charset;
  7. public class testScrollIterator {
  8. //Scroll不支持Sort, Aggregate,Distinct,Rank子句
  9. private static String appName = "替换为opensearch应用名";
  10. private static String tableName = "替换opensearch应用表名";
  11. private static String accesskey = "替换accesskey";
  12. private static String secret = "替换secret";
  13. private static String host = "替换应用的API访问地址";
  14. public static void main(String[] args) {
  15. //查看文件和默认编码格式
  16. System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
  17. System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
  18. //创建并构造OpenSearch对象
  19. OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
  20. //创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
  21. OpenSearchClient serviceClient = new OpenSearchClient(openSearch);
  22. //创建SearcherClient对象,并以OpenSearchClient对象作为构造参数
  23. SearcherClient searcherClient = new SearcherClient(serviceClient);
  24. //定义Config对象,用于设定config子句参数,分页,数据返回格式,应用名等等
  25. Config config = new Config(Lists.newArrayList(appName));
  26. //config.setStart(start) scroll该参数不起作用,默认为0
  27. config.setHits(5);//设置每页为5条记录
  28. //设置返回格式为FULLJSON,目前scroll只支持返回JSON和FULLJSON格式
  29. config.setSearchFormat(SearchFormat.FULLJSON);
  30. // 设置搜索结果返回应用中哪些字段
  31. config.setFetchFields(Lists.newArrayList("id", "name", "phone", "int_arr", "literal_arr", "float_arr", "cate_id"));
  32. // 注意:config子句中的rerank_size参数,在Rank类对象中设置
  33. // 创建参数对象
  34. SearchParams searchParams = new SearchParams(config);
  35. // 设置查询子句,若需多个索引组合查询,需要setQuery处合并,否则若设置多个setQuery后面的会替换前面查询
  36. searchParams.setQuery("name:'opensearch'");
  37. // 设置查询过滤条件
  38. //searchParams.setFilter("cate_id<=3"); //此处也可改用后面的ParamsBuilder实现添加过滤条件
  39. //设置scroll方式查询
  40. DeepPaging deep =new DeepPaging();
  41. //添加DeepPaging对象参数
  42. searchParams.setDeepPaging(deep);
  43. //使用DeepPageingIterator迭代操作起来会方便很多,可以不用管scroll_id之类的东西.
  44. DeepPageingIterator pagesIterator = new DeepPageingIterator(searcherClient, searchParams);
  45. //迭代器默认的迭代间隔是100毫秒. 此设计是为防止翻页速度太快对我们这边造成压力. 当然可以改变这个迭代间隔,如下所示.
  46. //pagesIterator.setPagingIntervals(80);//单位:ms
  47. try{
  48. System.out.println("test");
  49. while (pagesIterator.hasNext()) {
  50. System.out.println("调试信息输出:"+pagesIterator.next());
  51. }
  52. }catch(Exception ex){
  53. System.out.println("调试报错信息:"+ex.getMessage());
  54. }
  55. }
  56. }
本文导读目录