(Как добиться нумерации страниц с отдыхом на высоком уровне клиентом и пружиной?) Или альтернативой из упругого поиска тегов.mperyForPage () - PullRequest
0 голосов
/ 01 марта 2019

У меня проблема с миграцией с транспортного клиента на клиент высокого уровня Rest.Следующий код не будет работать с RestHighLevelClient, который я хочу использовать для получения ответа агрегированных страниц типа Class.

elasticsearchTemplate.queryForPage(searchQuery, Class.class)

Любые предложения по достижению того же с другим методом также приветствуются.

1 Ответ

0 голосов
/ 08 марта 2019

Мой обходной путь с использованием restHighLevelClient без Spring dataasticsearch состоит в следующем коде (это не решение, но, возможно, может помочь вашему решению):

        BoolQueryBuilder criteriaQuerySpecification = getCriteriaQuerySpecification(transactionFilter);

        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.sort(new FieldSortBuilder("operation_created_at").order(SortOrder.DESC));
        sourceBuilder.query(criteriaQuerySpecification);

        SearchRequest searchRequest = generateSearchRequest(totalElementsInt, pageNumberInt, sourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

        List<OperationDto > operations = Arrays.asList(hits).stream().map(hit -> {
            hit.getSourceAsString();
         // get operation is a method mapping from hit to your dto using  Map<String, Object> sourceAsMap = hit.getSourceAsMap();
         OperationDto operation = getOperationDto(hit);

            //convert hit to OperationDto
          return operation;
        }).collect(Collectors.toList());


private SearchRequest generateSearchRequest(Integer totalElementsInt, Integer pageNumberInt, SearchSourceBuilder sourceBuilder) {
    SearchRequest searchRequest = new SearchRequest("operation-index").types("operation");
    int  offset = pageNumberInt *totalElementsInt;
    sourceBuilder.from(offset);
    sourceBuilder.size(totalElementsInt);
    sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
    searchRequest.source(sourceBuilder);
    return searchRequest;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...