Запрос Elasticsearch занимает слишком много времени для извлечения данных с использованием API Java - PullRequest
0 голосов
/ 07 июня 2019

Я написал код Java для извлечения данных изasticsearch с помощью API RestHighLevelClient.Индекс насчитывает 8576 записей, а общее время заняло 18 секунд.Как я могу оптимизировать код?


        HttpHost httpHost = null;
        httpHost = new HttpHost(hostName, 9200);

        builder = RestClient.builder(httpHost);
        RestHighLevelClient client = new RestHighLevelClient(builder);

        SearchRequest searchRequest = null;
        ArrayList<Map<String, Object>> results;
        try {
            results = new ArrayList<Map<String, Object>>();
            searchRequest = new SearchRequest("4-ml_linreg-2-model-index");

            searchRequest.types("4-ml_linreg-2-model-index_type");

            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.matchAllQuery());
            sourceBuilder.from(0);
            sourceBuilder.size(5000);
            searchRequest.scroll(new TimeValue(180000));
            searchRequest.source(sourceBuilder);

            System.out.println("search start : " + new Date());
            response = client.search(searchRequest);
            System.out.println("search response : " + new Date());

            do {
                for (SearchHit hit : response.getHits().getHits()) {
                    results.add(hit.getSourceAsMap());
                }
                response = client.searchScroll(new SearchScrollRequest(response.getScrollId()).scroll(new TimeValue(180000)));
                System.out.println("scroll response : " + new Date());
            } while (response.getHits().getHits().length != 0); // Zero hits mark the end of the scroll and the while loop.
            System.out.println("response : " + new Date());
        } catch (Exception e) {
            System.out.println("Error while processing ES records:: " + e.getMessage());
            e.printStackTrace();
        }

Ниже приведен вывод консольного кода выше -

начало поиска: ср. 05 июня, 15:47:41 IST 2019

ответ на запрос поиска: ср. 05 июня 15:47:59 IST 2019

ответ прокрутки: ср. 05 июня 15:48:13 IST 2019

ответ прокрутки: ср. 05 июня 15:48:14 IST 2019

ответ: ср. 05 июня 15:48:14 IST 2019

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...