- 浏览: 667839 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
Elasticsearch Scroll和Slice Scroll查询API使用案例
Elasticsearch Scroll和Slice Scroll查询API使用案例
the best elasticsearch highlevel java rest api-----bboss
本文内容
本文对应的maven源码工程:
https://gitee.com/bbossgroups/eshelloword-booter
1.dsl配置文件定义
首先定义本文需要的dsl配置文件
esmapper/scroll.xml
下面介绍scroll各种用法,对应的测试类文件为:TestScrollAPIQuery
2.基本scroll api使用
3.基本scroll api与自定义scorll结果集handler函数结合使用
4.slice api使用
串行
并行
5.slice api使用与自定义scorll结果集handler函数结合使用
串行
并行
我们可以在application.properties文件中增加以下配置来设置slice scroll查询线程池线程数和等待队列长度:
elasticsearch.sliceScrollThreadCount 默认值500
elasticsearch.sliceScrollThreadQueue 默认值500
6 开发交流
elasticsearch技术交流群:166471282
elasticsearch微信公众号:
the best elasticsearch highlevel java rest api-----bboss
本文内容
- 基本scroll api使用
- 基本scroll api与自定义scorll结果集handler函数结合使用
- slice api使用(并行/串行)
- slice api使用与自定义scorll结果集handler函数结合使用(并行/串行)
本文对应的maven源码工程:
https://gitee.com/bbossgroups/eshelloword-booter
1.dsl配置文件定义
首先定义本文需要的dsl配置文件
esmapper/scroll.xml
<properties> <!-- 简单的scroll query案例,复杂的条件修改query dsl即可 --> <property name="scrollQuery"> <![CDATA[ { "size":#[size], "query": {"match_all": {}} } ]]> </property> <!-- 简单的slice scroll query案例,复杂的条件修改query dsl即可 --> <property name="scrollSliceQuery"> <![CDATA[ { "slice": { "id": #[sliceId], ## 必须使用sliceId作为变量名称 "max": #[sliceMax] ## 必须使用sliceMax作为变量名称 }, "size":#[size], "query": {"match_all": {}} } ]]> </property> </properties>
下面介绍scroll各种用法,对应的测试类文件为:TestScrollAPIQuery
2.基本scroll api使用
@Test public void testSimleScrollAPI(){ ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/scroll.xml"); //scroll分页检索 Map params = new HashMap(); params.put("size", 10000);//每页10000条记录 //scroll上下文有效期1分钟,每次scroll检索的结果都会合并到总得结果集中;数据量大时存在oom内存溢出风险,大数据量时可以采用handler函数来处理每次scroll检索的结果(后面介绍) ESDatas<Map> response = clientUtil.scroll("demo/_search","scrollQuery","1m",params,Map.class); List<Map> datas = response.getDatas(); long realTotalSize = datas.size(); long totalSize = response.getTotalSize(); System.out.println("totalSize:"+totalSize); System.out.println("realTotalSize:"+realTotalSize); System.out.println("countAll:"+clientUtil.countAll("demo")); }
3.基本scroll api与自定义scorll结果集handler函数结合使用
@Test public void testSimleScrollAPIHandler(){ ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/scroll.xml"); //scroll分页检索 Map params = new HashMap(); params.put("size", 5000);//每页5000条记录 //采用自定义handler函数处理每个scroll的结果集后,response中只会包含总记录数,不会包含记录集合 //scroll上下文有效期1分钟;大数据量时可以采用handler函数来处理每次scroll检索的结果,规避数据量大时存在的oom内存溢出风险 ESDatas<Map> response = clientUtil.scroll("demo/_search", "scrollQuery", "1m", params, Map.class, new ScrollHandler<Map>() { public void handle(ESDatas<Map> response) throws Exception {//自己处理每次scroll的结果 List<Map> datas = response.getDatas(); long totalSize = response.getTotalSize(); System.out.println("totalSize:"+totalSize+",datas.size:"+datas.size()); } }); System.out.println("response realzie:"+response.getTotalSize()); }
4.slice api使用
串行
/** * 串行方式执行slice scroll操作 */ @Test public void testSimpleSliceScrollApi() { ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/scroll.xml"); //scroll slice分页检索,max对应并行度,一般设置为与索引表的shards数一致 int max = 6; Map params = new HashMap(); params.put("sliceMax", max);//建议不要大于索引表的shards数 params.put("size", 100);//每页100条记录 //scroll上下文有效期1分钟,每次scroll检索的结果都会合并到总得结果集中;数据量大时存在oom内存溢出风险,大数据量时可以采用handler函数来处理每次slice scroll检索的结果(后面介绍) ESDatas<Map> sliceResponse = clientUtil.scrollSlice("demo/_search", "scrollSliceQuery", params,"1m",Map.class, false);//false表示串行;如果数据量大,建议采用并行方式来执行 System.out.println("totalSize:"+sliceResponse.getTotalSize()); System.out.println("realSize size:"+sliceResponse.getDatas().size()); }
并行
/** * 并行方式执行slice scroll操作 */ @Test public void testSimpleSliceScrollApiParral() { ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/scroll.xml"); //scroll slice分页检索,max对应并行度,一般设置为与索引表的shards数一致 int max = 6; Map params = new HashMap(); params.put("sliceMax", max);//这里设置6个slice,建议不要大于索引表的shards数,必须使用sliceMax作为变量名称 params.put("size", 100);//每页100条记录 //scroll上下文有效期2分钟,每次scroll检索的结果都会合并到总得结果集中;数据量大时存在oom内存溢出风险,大数据量时可以采用handler函数来处理每次scroll检索的结果(后面介绍) ESDatas<Map> sliceResponse = clientUtil.scrollSlice("demo/_search", "scrollSliceQuery", params,"2m",Map.class, true);//true表示并行,会从slice scroll线程池中申请sliceMax个线程来并行执行slice scroll检索操作,大数据量多个shared分片的情况下建议采用并行模式 System.out.println("totalSize:"+sliceResponse.getTotalSize()); System.out.println("realSize size:"+sliceResponse.getDatas().size()); }
5.slice api使用与自定义scorll结果集handler函数结合使用
串行
/** * 串行方式执行slice scroll操作 */ @Test public void testSimpleSliceScrollApiHandler() { ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/scroll.xml"); //scroll slice分页检索,max对应并行度,一般设置为与索引表的shards数一致 int max = 6; Map params = new HashMap(); params.put("sliceMax", max);//这里设置6个slice,建议不要大于索引表的shards数,必须使用sliceMax作为变量名称 params.put("size", 1000);//每页1000条记录 //采用自定义handler函数处理每个slice scroll的结果集后,sliceResponse中只会包含总记录数,不会包含记录集合 //scroll上下文有效期1分钟,大数据量时可以采用handler函数来处理每次scroll检索的结果,规避数据量大时存在的oom内存溢出风险 ESDatas<Map> sliceResponse = clientUtil.scrollSlice("demo/_search", "scrollSliceQuery", params,"1m",Map.class, new ScrollHandler<Map>() { public void handle(ESDatas<Map> response) throws Exception {//自己处理每次scroll的结果 List<Map> datas = response.getDatas(); long totalSize = response.getTotalSize(); System.out.println("totalSize:"+totalSize+",datas.size:"+datas.size()); } }, false);//false表示串行,如果数据量大建议采用并行模式 long totalSize = sliceResponse.getTotalSize(); System.out.println("totalSize:"+totalSize); }
并行
/** * 并行方式执行slice scroll操作 */ @Test public void testSimpleSliceScrollApiParralHandler() { ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/scroll.xml"); //scroll slice分页检索,max对应并行度,一般设置为与索引表的shards数一致 int max = 6; Map params = new HashMap(); params.put("sliceMax", max);//这里设置6个slice,建议不要大于索引表的shards数,必须使用sliceMax作为变量名称 params.put("size", 1000);//每页1000条记录 //采用自定义handler函数处理每个slice scroll的结果集后,sliceResponse中只会包含总记录数,不会包含记录集合 //scroll上下文有效期1分钟,大数据量时可以采用handler函数来处理每次scroll检索的结果,规避数据量大时存在的oom内存溢出风险 ESDatas<Map> sliceResponse = clientUtil.scrollSlice("demo/_search", "scrollSliceQuery", params,"1m",Map.class, new ScrollHandler<Map>() { public void handle(ESDatas<Map> response) throws Exception {//自己处理每次scroll的结果,注意结果是异步检索的 List<Map> datas = response.getDatas(); long totalSize = response.getTotalSize(); System.out.println("totalSize:"+totalSize+",datas.size:"+datas.size()); } }, true);//true表示并行,会从slice scroll线程池中申请sliceMax个线程来并行执行slice scroll检索操作,大数据量多个shared分片的情况下建议采用并行模式 long totalSize = sliceResponse.getTotalSize(); System.out.println("totalSize:"+totalSize); }
我们可以在application.properties文件中增加以下配置来设置slice scroll查询线程池线程数和等待队列长度:
elasticsearch.sliceScrollThreadCount 默认值500
elasticsearch.sliceScrollThreadQueue 默认值500
6 开发交流
elasticsearch技术交流群:166471282
elasticsearch微信公众号:
发表评论
-
一组获取Elasticsearch 索引表所有文档API使用案例
2018-11-18 16:02 3001The best elasticsearch highle ... -
数据库数据导入Elasticsearch案例分享
2018-09-16 18:42 6246The best elasticsearch highleve ... -
Spring Boot整合ElasticSearch单/多集群案例
2018-07-07 20:12 9761Spring Boot整合ElasticSearch单个集群和 ... -
ElasticSearch DSL Script使用案例分享
2018-06-28 23:52 6166the best elasticsearch highleve ... -
Elasticsearch 6.3.0 SQL功能使用案例分享
2018-06-25 19:12 3270The best elasticsearch highleve ... -
数据库数据导入Elasticsearch案例分享
2018-06-21 22:56 433The best elasticsearch highleve ... -
ElasticSearch From-Size分页案例
2018-06-14 00:17 3375ElasticSearch From-Size分页案例 1. ... -
ElasticSearch客户端注解使用介绍
2018-05-30 00:19 2362The best elasticsearch highleve ... -
基于自定义配置文件初始化ElasticSearch客户端方法介绍
2018-05-24 18:56 1479基于自定义配置文件初始化ElasticSearch客户端方法介 ... -
Elasticsearch关键词高亮检索案例分享
2018-05-10 22:18 62091.准备工作 参考文档《集成Elasticsearch Res ... -
判断ElasticSearch索引Indice和索引类型是否存在
2018-05-05 23:54 8488The best elasticsearch highleve ... -
快速集成Elasticsearch Restful API案例
2018-04-26 14:27 3163The best elasticsearch highleve ... -
Elasticsearch source filter检索案例
2018-04-24 13:00 2212摘要: the best elasticsearch high ... -
Elasticsearch search after分页检索案例
2018-04-21 10:36 3040Elasticsearch search after分页检索案 ... -
Elasticsearch Delete/UpdateByQuery案例
2018-04-16 11:09 7313Elasticsearch Delete/UpdateByQu ... -
Elasticsearch返回父子数据关联查询案例
2018-04-13 12:36 4665在《Elasticsearch 父子关 ... -
Elasticsearch Sliced Scroll分页检索案例分享
2018-04-02 18:28 3734Elasticsearch Sliced Scroll分页检索 ... -
Elasticsearch地理位置维护及检索案例分享
2018-03-31 21:36 1683Elasticsearch地理位置信息维护及检索案例分享 1 ... -
Elasticsearch Scroll分页检索案例分享
2018-03-28 20:40 4052Elasticsearch Scroll分页检索案例分享 1 ... -
Elasticsearch Mget、GetDocSource、索引部分更新案例分享
2018-03-25 08:55 12131.前期准备 参考文档《高性能elasticsearch OR ...
相关推荐
Elasticsearch接口api使用说明,包括全文检索,查询匹配,常用的过滤器 GET /_search的各类使用方法
Elasticsearch滚动流 Elasticsearch Scroll查询结果作为Node.js可读流。 此模块可与官方Elasticsearch Node.js客户端一起使用: (新的Elasticsearch js API) (旧的Elasticsearch js API)原料药...
赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档:elasticsearch-6.8.3-javadoc-API文档...
ElasticSearch Java API 中文文档 ElasticSearch Java API 中文文档
赠送原API文档:elasticsearch-6.2.3-javadoc.jar; 赠送源代码:elasticsearch-6.2.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.2.3.pom; 包含翻译后的API文档:elasticsearch-6.2.3-javadoc-API文档...
赠送原API文档:elasticsearch-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-6.3.0-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.3.0.pom; 包含翻译后的API文档:elasticsearch-6.3.0-javadoc-API文档...
springboot 集成elasticsearch ,api的使用, elasticsearch版本为7.13.4, springboot版本 2.5.3 jdk8
ESAPI入门使用例子,防XSS攻击,防SQL注入,过滤等等。
elasticsearch官网给的java API太过于片面,自己深究用java写的工具类集合,包括mapping创建,批量插入,聚合,模糊查询,精确查询等功能。
今天小编就为大家分享一篇关于JAVA使用Elasticsearch查询in和not in的实现方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
ElasticSearch 官方 java API
赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档:elasticsearch-6.8.3-javadoc-API文档...
赠送原API文档:elasticsearch-5.5.1-javadoc.jar; 赠送源代码:elasticsearch-5.5.1-sources.jar; 赠送Maven依赖信息文件:elasticsearch-5.5.1.pom; 包含翻译后的API文档:elasticsearch-5.5.1-javadoc-API文档...
赠送原API文档:elasticsearch-cli-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-cli-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-cli-6.8.3.pom; 包含翻译后的API文档:elasticsearch-cli-6.8.3...
分布式搜索elasticsearch java API 之(一)--- 与集群交互 2 分布式搜索elasticsearch java API 之(二)--- put Mapping...分布式搜索elasticsearch java API 之(八)--- 使用More like this实现基于内容的推荐 12
赠送原API文档:elasticsearch-rest-high-level-client-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-rest-high-level-client-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-rest-high-level-client...
基于Elasticsearch2.1.1的JavaAPI基本操作代码示例
ES(elasticSearch6.4.0)之java API源码demo-完整注释版,本版本为上一demo版本升级版,封装了ES的javaAPI,支持了模糊查询,排序查询,解析,分页查询等功能,如果有问题请留言。我会及时回复。
赠送原API文档:elasticsearch-rest-client-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-rest-client-6.8.3.pom; 包含翻译后的API文档...
ElasticSearch查询学习;ElasticSearch查询学习;ElasticSearch查询学习;ElasticSearch查询学习;ElasticSearch查询学习;ElasticSearch查询学习;