ElasticSearch From-Size分页案例

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 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
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
6月前
|
缓存 搜索推荐 关系型数据库
Elasticsearch - 闲聊ElasticSearch中的分页
Elasticsearch - 闲聊ElasticSearch中的分页
58 0
|
6月前
|
存储 关系型数据库 数据库
ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
|
6月前
|
存储 监控 安全
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践1
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践
79 0
|
4月前
elasticsearch使用 scroll 滚动分页实战实例
elasticsearch使用 scroll 滚动分页实战实例
129 0
|
2月前
|
JSON 前端开发 Java
【Elasticsearch】黑马旅游案例
【Elasticsearch】黑马旅游案例
177 0
|
9月前
|
SQL 索引
ElasticSearch分页
es有多种方式实现分页查询:from+size,scroll,searchAfter,本文讨论各种方式的利弊和适用场景。
177 0
|
6月前
|
存储 Java 数据库
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践2
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践2
35 0
|
9月前
【Elasticsearch】黑马旅游案例(三)
【Elasticsearch】黑马旅游案例(三)
101 0
|
9月前
|
前端开发 Java 定位技术
【Elasticsearch】黑马旅游案例(二)
【Elasticsearch】黑马旅游案例(二)
116 0
|
9月前
|
JSON 前端开发 Java
【Elasticsearch】黑马旅游案例(一)
【Elasticsearch】黑马旅游案例
156 0