Spring Data Elasticsearch - Как вернуть счет - PullRequest
0 голосов
/ 30 ноября 2018

Я использую Spring Data Elasticsearch и могу успешно выполнить запрос на совпадение, который возвращает некоторые элементы.Я также хотел бы отобразить счет, но он всегда возвращает ноль.

Вот код:

String query = "test";
SearchQuery searchQuery = new NativeSearchQueryBuilder()
    .withQuery(matchQuery("_all", query))
    .build();

String scrollId = elasticsearchTemplate.scan(searchQuery, 1000, false);
        List<GlobalSearchDTO> sampleEntities = new ArrayList<GlobalSearchDTO>();
        boolean hasRecords = true;
        while (hasRecords){
            Page<GlobalSearchDTO> page = elasticsearchTemplate.scroll(scrollId, 5000L , new SearchResultMapper(){

                @Override
                public <T> AggregatedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) {
                    List<GlobalSearchDTO> out = new ArrayList<>();
                    GlobalSearchDTO tmp;
                    ObjectMapper objectMapper = new ObjectMapper();
                    log.debug("MAX SCORE {}", response.getHits().getMaxScore()); // <-- ZERO
                    for (SearchHit hit : response.getHits()) {
                        tmp = new GlobalSearchDTO();
                        tmp.setId(Long.valueOf(hit.getId()));
                        tmp.setType(hit.getType());
                        log.debug("SCORE: {}", hit.getScore()); // <-- ZERO

                        try {
                            switch(hit.getIndex()) {
                                case "document": // map to DTO
                                    tmp.setObj(objectMapper.readValue(hit.getSourceAsString(), Document.class));
                                    break;
                                case "product": //map to DTO
                                    tmp.setObj(objectMapper.readValue(hit.getSourceAsString(), Product.class));
                                    break;
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

                        out.add(tmp);
                    }

                    if (out.size() > 0) {
                        return new AggregatedPageImpl<T>((List<T>) out);
                    }
                    return null;
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...