【发布时间】:2023-06-11 02:30:01
【问题描述】:
我有一个可以从 Elasticsearch 导出一些报告数据的 rest 应用程序。使用 Java API 很容易做到:
SearchResponse response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.get();
问题始于大反应。使用此代码 sn-p,读取响应以在内存中构建 SearchResponse
对象。在我的情况下,响应不适合记忆。
分页无济于事,因为我们经常需要返回完整的数据和聚合do not support paging yet。
我知道我可以使用 Elasticsearch REST API 将响应读取为流,但是手动构建请求很麻烦。我真的很想要这样的东西:
// my dream API
InputStream response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.getStream();
那么,Elasticsearch Java API 可以流式传输SearchResponse
吗?
【问题讨论】:
标签: java performance elasticsearch stream inputstream