您现在的位置是:首页 > 文章详情

Spring data elasticsearch 3.1 大数据集访问手册外更新

日期:2018-11-04点击:556

错误提示

elasticsearch result window is too large from + size must be less than or equal to 10000

原因

Elasticsearch 默认返回集在10000条以内。

解决办法

如果需要更多的返回值,有2种办法:

  • 调整max_result_window, 好处是沿用现有的访问方式 , repository 和pageable都正常使用,弊端是其实不是官方推荐的方式,会影响速度,带来过大内存消耗。

curl -XPUT "http://localhost:9200/my_index/_settings" -d '{ "index" : { "max_result_window" : 500000 } }'

重点是Spring的手册并没有更新,只是代码更新了,3.1里面提到的方法elasticsearchTemplate.scan(searchQuery,1000,false) API里面根本不支持。

为此,我从github的测试代码中翻出了这宝贵的调用例子,成功调通,在这奉献给大家。

CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria()); criteriaQuery.addIndices(INDEX_NAME); criteriaQuery.addTypes(TYPE_NAME); criteriaQuery.setPageable(new PageRequest(0, 10)); ScrolledPage<SampleEntity> scroll = (ScrolledPage<SampleEntity>) elasticsearchTemplate.startScroll( 1000, criteriaQuery, SampleEntity.class); List<SampleEntity> sampleEntities = new ArrayList<>(); while (scroll.hasContent()) { sampleEntities.addAll(scroll.getContent()); scroll = (ScrolledPage<SampleEntity>) elasticsearchTemplate.continueScroll(scroll.getScrollId() , 1000, SampleEntity.class); } elasticsearchTemplate.clearScroll(scroll.getScrollId());

附上源码出处

原文链接:https://yq.aliyun.com/articles/664955
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章