gpt4 book ai didi

java - Elasticsearch 可以流式传输 SearchResponse 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 20:33:52 25 4
gpt4 key购买 nike

我有一个可以从 Elasticsearch 导出一些报告数据的休息应用程序。使用 Java API 很容易做到:

SearchResponse response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.get();

问题始于大反响。使用此代码片段,读取响应以在内存中构建 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 吗?

最佳答案

A proposal for streaming results确实存在,但到目前为止它似乎还没有起色并被关闭(暂时)。

有一种方法可以用 XContentBuilder 做到这一点但这仍然需要在发送之前将整个响应保存在内存中。

它可能不是您想要的,但这是我所知道的最能满足您需求的东西。值得一试。

关于java - Elasticsearch 可以流式传输 SearchResponse 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28861858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com