Example usage for org.springframework.data.elasticsearch.core ResultsMapper ResultsMapper

List of usage examples for org.springframework.data.elasticsearch.core ResultsMapper ResultsMapper

Introduction

In this page you can find the example usage for org.springframework.data.elasticsearch.core ResultsMapper ResultsMapper.

Prototype

ResultsMapper

Source Link

Usage

From source file:org.springframework.data.elasticsearch.core.ElasticsearchTemplate.java

private <T> FacetedPage<T> mapResults(SearchResponse response, final Class<T> elementType,
        final Pageable pageable) {
    ResultsMapper<T> resultsMapper = new ResultsMapper<T>() {
        @Override// w  w  w . j a va  2 s  .  co  m
        public FacetedPage<T> mapResults(SearchResponse response) {
            long totalHits = response.getHits().totalHits();
            List<T> results = new ArrayList<T>();
            for (SearchHit hit : response.getHits()) {
                if (hit != null) {
                    results.add(mapResult(hit.sourceAsString(), elementType));
                }
            }
            List<FacetResult> facets = new ArrayList<FacetResult>();
            if (response.getFacets() != null) {
                for (Facet facet : response.getFacets()) {
                    FacetResult facetResult = FacetMapper.parse(facet);
                    if (facetResult != null) {
                        facets.add(facetResult);
                    }
                }
            }

            return new FacetedPageImpl<T>(results, pageable, totalHits, facets, response.getHits());
        }
    };
    return resultsMapper.mapResults(response);
}

From source file:org.springframework.data.elasticsearch.core.ElasticsearchTemplateTests.java

@Test
public void shouldReturnSpecifiedFields() {
    // given/*from w w  w .  j  a  va 2s.  c  om*/
    String documentId = randomNumeric(5);
    String message = "some test message";
    SampleEntity sampleEntity = new SampleEntity();
    sampleEntity.setId(documentId);
    sampleEntity.setMessage(message);
    sampleEntity.setVersion(System.currentTimeMillis());

    IndexQuery indexQuery = new IndexQuery();
    indexQuery.setId(documentId);
    indexQuery.setObject(sampleEntity);

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(SampleEntity.class, true);
    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withIndices("test-index").withTypes("test-type").withFields("message").build();
    // when
    Page<String> page = elasticsearchTemplate.queryForPage(searchQuery, new ResultsMapper<String>() {
        @Override
        public FacetedPage<String> mapResults(SearchResponse response) {
            List<String> values = new ArrayList<String>();
            for (SearchHit searchHit : response.getHits()) {
                values.add((String) searchHit.field("message").value());
            }
            return new FacetedPageImpl<String>(values);
        }
    });
    // then
    assertThat(page, is(notNullValue()));
    assertThat(page.getTotalElements(), is(equalTo(1L)));
    assertThat(page.getContent().get(0), is(message));
}

From source file:org.springframework.data.elasticsearch.core.ElasticsearchTemplateTests.java

@Test
public void shouldReturnResultsWithScanAndScroll() {
    //given/*from ww  w.jav a  2s  .  c  om*/
    List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30);
    // when
    elasticsearchTemplate.bulkIndex(entities);
    elasticsearchTemplate.refresh(SampleEntity.class, true);
    // then

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withIndices("test-index").withTypes("test-type").withPageable(new PageRequest(0, 10)).build();

    String scrollId = elasticsearchTemplate.scan(searchQuery, 1000, false);
    List<SampleEntity> sampleEntities = new ArrayList<SampleEntity>();
    boolean hasRecords = true;
    while (hasRecords) {
        Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 5000L,
                new ResultsMapper<SampleEntity>() {
                    @Override
                    public FacetedPage<SampleEntity> mapResults(SearchResponse response) {
                        List<SampleEntity> chunk = new ArrayList<SampleEntity>();
                        for (SearchHit searchHit : response.getHits()) {
                            if (response.getHits().getHits().length <= 0) {
                                return null;
                            }
                            SampleEntity user = new SampleEntity();
                            user.setId(searchHit.getId());
                            user.setMessage((String) searchHit.getSource().get("message"));
                            chunk.add(user);
                        }
                        if (chunk.size() > 0) {

                            return new FacetedPageImpl<SampleEntity>(chunk);
                        }
                        return null;
                    }

                });
        if (page != null) {
            sampleEntities.addAll(page.getContent());
        } else {
            hasRecords = false;
        }

    }
    assertThat(sampleEntities.size(), is(equalTo(30)));
}

From source file:org.springframework.data.elasticsearch.core.ElasticsearchTemplateTests.java

@Test
public void shouldReturnHighlightedFieldsForGivenQueryAndFields() {

    //given//from  www .j  a  v  a  2s.c  o  m
    String documentId = randomNumeric(5);
    String actualMessage = "some test message";
    String highlightedMessage = "some <em>test</em> message";

    SampleEntity sampleEntity = new SampleEntity();
    sampleEntity.setId(documentId);
    sampleEntity.setMessage(actualMessage);
    sampleEntity.setVersion(System.currentTimeMillis());

    IndexQuery indexQuery = new IndexQuery();
    indexQuery.setId(documentId);
    indexQuery.setObject(sampleEntity);

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(SampleEntity.class, true);

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "test"))
            .withHighlightFields(new HighlightBuilder.Field("message")).build();

    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,
            new ResultsMapper<SampleEntity>() {
                @Override
                public FacetedPage<SampleEntity> mapResults(SearchResponse response) {
                    List<SampleEntity> chunk = new ArrayList<SampleEntity>();
                    for (SearchHit searchHit : response.getHits()) {
                        if (response.getHits().getHits().length <= 0) {
                            return null;
                        }
                        SampleEntity user = new SampleEntity();
                        user.setId(searchHit.getId());
                        user.setMessage((String) searchHit.getSource().get("message"));
                        user.setHighlightedMessage(
                                searchHit.getHighlightFields().get("message").fragments()[0].toString());
                        chunk.add(user);
                    }
                    if (chunk.size() > 0) {
                        return new FacetedPageImpl<SampleEntity>(chunk);
                    }
                    return null;
                }
            });

    assertThat(sampleEntities.getContent().get(0).getHighlightedMessage(), is(highlightedMessage));

}