开发者社区> bboss> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ElasticSearch From-Size分页案例

简介: ElasticSearch From-Size分页案例 1.定义from-size检索的dsl 定义from-size检索的dsl,里面包含外部需要传入的检索条件参数变量和分页参数变量: 2.
+关注继续查看
ElasticSearch From-Size分页案例

1.定义from-size检索的dsl
定义from-size检索的dsl,里面包含外部需要传入的检索条件参数变量和分页参数变量:
<!--
       一个简单的检索dsl,中有四个变量
       applicationName1
       applicationName2
       startTime
       endTime
       通过map传递变量参数值

       变量语法参考文档:
   -->
    <property name="searchPagineDatas">
        <![CDATA[{
            "query": {
                "bool": {
                    "filter": [
                        {  ## 多值检索,查找多个应用名称对应的文档记录
                            "terms": {
                                "applicationName.keyword": [#[applicationName1],#[applicationName2]]
                            }
                        },
                        {   ## 时间范围检索,返回对应时间范围内的记录,接受long型的值
                            "range": {
                                "agentStarttime": {
                                    "gte": #[startTime],##统计开始时间
                                    "lt": #[endTime]  ##统计截止时间
                                }
                            }
                        }
                    ]
                }
            },
            ## 分页起点
            "from":#[from],
            ## 最多返回size条记录
            "size":#[size]
        }]]>
    </property>


2.加载dsl所在配置文件,并执行from-size分页检索
 /**
	 * 分页检索文档
	 * @throws ParseException
	 */
	public void testPagineSearch() throws ParseException {
		//创建加载配置文件的客户端工具,用来检索文档,单实例多线程安全
		ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/demo.xml");
		//设定查询条件,通过map传递变量参数值,key对于dsl中的变量名称
		//dsl中有四个变量
		//        applicationName1
		//        applicationName2
		//        startTime
		//        endTime
		Map<String,Object> params = new HashMap<String,Object>();
		//设置applicationName1和applicationName2两个变量的值
		params.put("applicationName1","blackcatdemo2");
		params.put("applicationName2","blackcatdemo3");
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//设置时间范围,时间参数接受long值
		params.put("startTime",dateFormat.parse("2017-09-02 00:00:00"));
		params.put("endTime",new Date());	
		 
		ESDatas<Demo> esDatas = null;//返回的文档封装对象类型
		//保存总记录数
		long totalSize = 0;
		//保存每页结果对象列表,最多返回1000条记录
		List<Demo> demos = null;
		int i = 0; //页码
		do{//遍历获取每页的记录
			//设置分页参数
			params.put("from",i * 1000);//分页起点
			params.put("size",1000);//每页返回1000条
			i ++;//往前加页码
			//执行查询,demo为索引表,_search为检索操作action
			 esDatas =  //ESDatas包含当前检索的记录集合,最多1000条记录,由dsl中的size属性指定
					clientUtil.searchList("demo/_search",//demo为索引表,_search为检索操作action
							"searchPagineDatas",//esmapper/demo.xml中定义的dsl语句
							params,//变量参数
							Demo.class);//返回的文档封装对象类型
			demos = esDatas.getDatas();//每页结果对象列表,最多返回1000条记录
			totalSize = esDatas.getTotalSize();//总记录数
			if(i * 1000 > totalSize)
				break;
		}while(true);

//		String json = clientUtil.executeRequest("demo/_search",//demo为索引表,_search为检索操作action
//				"searchDatas",//esmapper/demo.xml中定义的dsl语句
//				params);

//		String json = com.frameworkset.util.SimpleStringUtil.object2json(demos);

		System.out.println(totalSize);
	}


3.完整的demo实例工程
https://github.com/bbossgroups/eshelloword-booter

https://gitee.com/bbossgroups/eshelloword-booter

4 开发交流
elasticsearch技术交流群:166471282

elasticsearch微信公众号:
img_a21db47cf20ac4820026d60bcb2b9470.jpe

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【laralve项目】深度使用elasticsearch(2)
【laralve项目】深度使用elasticsearch
20 0
Elasticsearch 字段类型之 Range 经典应用场景
Elasticsearch 产品功能越来越强大,字段类型支持很多种,部分类型还引入了专用的算法。一个客户企业选中 Elasticsearch 作为搜索中台,居然是看中了 Elasticsearch 的 Range 字段类型,下面就围绕这个 Range 类型展开。
1397 0
前后端分离SpringBoot项目,Docker部署后端Jar包
前后端分离SpringBoot项目,Docker部署后端Jar包 Docker制作后端项目镜像 第一步 下载Docker 使用的是CentOS7,内核低于3.0好像不行,查看内核命令 uname -r yum install docker  1 常用docker命令 启动docker:syst.
6426 0
Spring Boot整合ElasticSearch单/多集群案例
Spring Boot整合ElasticSearch单个集群和多个集群案例分享,本文涉及内容: 导入spring boot elasticsearch starter 单个es集群案例 多个es集群案例 本文内容适合于: spring boot 1.
12028 0
Elasticsearch search after分页检索案例
Elasticsearch search after分页检索案例分享 The best elasticsearch highlevel java rest api-----bboss 1.准备工作 参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端 2.
4405 0
Elasticsearch Scroll分页检索案例分享
Elasticsearch Scroll分页检索案例分享 1.准备工作 参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端bboss 2.定义scroll检索dsl 首先定义一个简单的scroll dsl检索脚本 3.
2181 0
Apache Solr vs Elasticsearch-feature
API Feature Solr 6.2.1 ElasticSearch 5.0 Format XML, CSV, JSON JSON HTTP REST API Bin...
2061 0
Elasticsearch shield权限管理详解
ElasticSearch本身没有权限管理模块,只要获取服务器的地址和端口,任何人都可以随意读写ElasticSearch的API并获取数据,这样非常不安全。
1073 0
+关注
bboss
热衷开源,主要开源作品:开源框架bboss,bboss session,bboss 序列化等 bboss特色:http://yin-bp.iteye.com/blog/1080824
328
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载