Ich habe eine Rest-Anwendung, die einige Berichtsdaten aus Elasticsearch exportieren kann. Es ist leicht, mit dem Java-API zu tun:Kann Elasticsearch die SearchResponse streamen?
SearchResponse response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.get();
Das Problem mit den großen Antworten beginnt. Mit diesem Codeschnipsel wird die Antwort gelesen, um das Objekt SearchResponse
im Speicher zu erstellen. In meinem Fall passt die Antwort nicht in den Speicher.
Paging kann nicht helfen, da wir häufig die vollständigen Daten und Aggregationen do not support paging yet zurückgeben müssen.
Ich weiß, dass ich die Elasticsearch-REST-API verwenden kann, um die Antwort als Stream zu lesen, aber manuell erstellen Sie die Anfrage ist es mühsam. Ich möchte wirklich so etwas wie dieses:
// my dream API
InputStream response = getClient()
.prepareSearch("my_index_name")
.setQuery(QueryBuilders.someQuery())
.addAggregation(AggregationBuilders.someAggregation())
.getStream();
So kann die Elasticsearch Java API den SearchResponse
streamen?