Эффективный способ использования API прокрутки elasticsearch

Я использую elasticsearch (версия ES 5) для прокрутки API, чтобы получить все документы, а затем записать в файл csv. Мой код, как показано ниже. Это работает, однако есть небольшая проблема. Загрузка файла занимает более 5 минут.

try
    {
        TransportClient client = getTransportClient( NoSQLConnectionPool.ELASTIC_STAT );

        if( client != null )
        {
            SearchResponse scrollResp = client.prepareSearch( Constants.INDEX )
                    .addSort( fieldSort( Constants.PRICE ).order( ASC ) )
                    .setScroll( new TimeValue( 60000 ) )
                    .setQuery( buildBoolQuery( request ) )
                    .setSize( 100 ).get(); //max of 100 hits will be returned for each scroll

            //Scroll until no hits are returned
            do
            {
                List<JsonElement> list = getAllElement( scrollResp.getHits().getHits() );
                //                  resultsList.addAll( results );

                buildReportContent( sb, list ); //iterate list and append data to string builder(sb)

                scrollResp = client.prepareSearchScroll( scrollResp.getScrollId() ).setScroll( new TimeValue( 60000 ) ).execute().actionGet();
            }
            while( scrollResp.getHits().getHits().length != 0 ); // Zero hits mark the end of the scroll and the while loop.
        }

        return CsvFileWriter.csvFileWrite( sb );

    }
    catch ( Exception e )
    {
        e.printStackTrace();

    }

Любые предложения, чтобы сделать это более эффективно?

Спасибо!


person Rose18    schedule 13.10.2017    source источник
comment
О каком количестве документов здесь идет речь?   -  person Val    schedule 13.10.2017
comment
Также есть гораздо более простой способ сделать это с помощью Logstash: как сгенерировать ответ csv в elasticsearch"> stackoverflow.com/questions/41763752/   -  person Val    schedule 13.10.2017
comment
@Вал, более 85000 документов   -  person Rose18    schedule 13.10.2017
comment
Подходит ли альтернатива Logstash для вашего случая?   -  person Val    schedule 13.10.2017
comment
Нет, я хочу сделать это с помощью Java API   -  person Rose18    schedule 13.10.2017
comment
Это может быть связано с тем, что вы храните все 85000 строк в памяти, прежде чем записывать их... возможно, вам следует передавать каждый пакет в файл CSV на каждой итерации, а не ждать до конца, чтобы сделать это.   -  person Val    schedule 13.10.2017