Spring data elasticsearch 3.1 大数

2018-11-05  本文已影响0人  hohoha

错误提示

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

原因

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

解决办法

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

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

附上源码出处

上一篇下一篇

猜你喜欢

热点阅读