美文网首页
Spring data elasticsearch 3.1 大数

Spring data elasticsearch 3.1 大数

作者: hohoha | 来源:发表于2018-11-05 15:55 被阅读0次

    错误提示

    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());
    

    附上源码出处

    相关文章

      网友评论

          本文标题:Spring data elasticsearch 3.1 大数

          本文链接:https://www.haomeiwen.com/subject/tkpsxqtx.html