我想阅读我的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;
}
但是这个函数只返回10个文件。如果我再添加一个参数.setSize(100)
,那么它将返回100个文档。如何在没有.setSize(100)参数的情况下获取索引中的所有文档?
答案 0 :(得分:7)
这不是一种有效的方法,可能是因为这可能是一个真正的性能问题。如果您需要所有记录,则至少有两种方法:
使用分页:大小和
使用滚动API: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-scroll.html
另一种方法可能是设置更高的大小,首先执行计数查询以获取所有项的计数,而不是将大小设置为此值。但我永远不会在生产中使用这种解决方案。