我有一个可以从Elasticsearch导出一些报告数据的休息应用程序.使用Java API很容易:
SearchResponse response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.get();
Run Code Online (Sandbox Code Playgroud)
问题始于大反应.使用此代码片段,将读取响应以SearchResponse
在内存中构建对象.在我的情况下,响应不适合内存.
分页无法帮助,因为我们经常需要返回完整数据,而Aggregations 还不支持分页.
我知道我可以使用Elasticsearch REST API将响应作为流读取,但是手动构建请求会很麻烦.我真的想要这样的东西:
// my dream API
InputStream response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.getStream();
Run Code Online (Sandbox Code Playgroud)
那么,Elasticsearch Java API流可以SearchResponse
吗?