elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java 匹配所有查询,但不返回所有文档

Java 匹配所有查询,但不返回所有文档,java,elasticsearch,Java,elasticsearch,我想读取es索引中的所有文档。因此,我使用以下函数: public List<Map<String, Object>> getAllDocs(){ System.out.println(indexName+typeName); SearchResponse response = client.prepareSearch(indexName) .setTypes(typeName)

我想读取es索引中的所有文档。因此,我使用以下函数:

public List<Map<String, Object>> getAllDocs(){
        System.out.println(indexName+typeName);
        SearchResponse response = client.prepareSearch(indexName)
                .setTypes(typeName)
                .setQuery(QueryBuilders.matchAllQuery())
                .execute()
                .actionGet();

        for(SearchHit hit : response.getHits()){
            //System.out.println("id:"+hit.getId()+" row:"+hit.getSource());
            esData.add(hit.getSource());
        }
        return esData;
    }
公共列表getAllDocs(){ System.out.println(indexName+typeName); SearchResponse=client.prepareSearch(indexName) .setTypes(类型名称) .setQuery(QueryBuilders.matchAllQuery()) .execute() .actionGet(); for(SearchHit:response.getHits()){ //System.out.println(“id:+hit.getId()+”行:+hit.getSource()); 添加(hit.getSource()); } 返回数据; }
但是这个函数只返回10个文档。如果我再添加一个参数
.setSize(100)
,那么它将返回100个文档。如果没有.setSize(100)参数,如何获取索引中的所有文档

这不是一种真正有效的方法,可能是因为这可能是一个真正的性能问题。如果需要所有记录,至少有两种方法:

使用分页:大小和起始

使用scroll api:

另一种方法是设置更高的大小,首先执行计数查询以获取所有项目的计数,然后将大小设置为该值。但我永远不会在生产中使用此解决方案