Ho un'applicazione di riposo in grado di esportare alcuni dati di report da Elasticsearch. È facile da fare con l'API Java:Elasticsearch può eseguire lo streaming di SearchResponse?
SearchResponse response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.get();
Il problema inizia con le grandi risposte. Utilizzando questo snippet di codice, la risposta viene letta per creare l'oggetto SearchResponse
in memoria. Nel mio caso, la risposta non si adatta alla memoria.
Il paging non può essere d'aiuto perché spesso è necessario restituire i dati completi e Aggregations do not support paging yet.
So che posso utilizzare l'API REST Elasticsearch per leggere la risposta come flusso, ma creare manualmente la richiesta è ingombrante. Voglio davvero qualcosa di simile:
// my dream API
InputStream response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.getStream();
Quindi, può trasmettere l'API Java elasticsearch il SearchResponse
?