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

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

Introduction

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

Prototype

public FacetedPageImpl(List<T> content) 

Source Link

Usage

From source file:org.bisen.chatamari.service.BlogService.java

@Transactional(readOnly = true)
public Page<ElasticBlog> search(String query, Pageable pageable) throws DataAccessException {

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(QueryBuilders.queryString(query))
            .withPageable(pageable).withHighlightFields(new HighlightBuilder.Field("strippedContent"),
                    new HighlightBuilder.Field("title"))
            .build();//from   ww  w.java  2  s.  c o  m
    Page<ElasticBlog> pageResult = elasticsearchTemplate.queryForPage(searchQuery, ElasticBlog.class,
            new SearchResultMapper() {

                @Override
                public <T> FacetedPage<T> mapResults(SearchResponse response, Class<T> clazz,
                        Pageable pageable) {
                    List<ElasticBlog> blogs = new ArrayList<>();
                    for (SearchHit hit : response.getHits()) {
                        if (response.getHits().getHits().length <= 0) {
                            return null;
                        }
                        ElasticBlog blog = new ElasticBlog();
                        blog.setId(Integer.parseInt(hit.getId()));
                        blog.setContent((String) hit.getSource().get("content"));
                        blog.setCreatedByEmail((String) hit.getSource().get("createdByEmail"));
                        blog.setCreatedDate(hit.getSource().get("createdDate") != null
                                ? new Date((long) hit.getSource().get("createdDate"))
                                : null);
                        blog.setLastModifiedByEmail((String) hit.getSource().get("createdModifiedEmail"));
                        blog.setLastModifiedDate(hit.getSource().get("lastModifiedDate") != null
                                ? new Date((long) hit.getSource().get("lastModifiedDate"))
                                : null);
                        blog.setTags((ArrayList<String>) hit.getSource().get("tags"));
                        blog.setTitle((String) hit.getSource().get("title"));
                        if (hit.getHighlightFields() != null) {
                            if (hit.getHighlightFields().get("strippedContent") != null) {
                                blog.setHighlightedString(
                                        hit.getHighlightFields().get("strippedContent").fragments()[0]
                                                .toString());
                            } else {
                                blog.setHighlightedString(
                                        hit.getHighlightFields().get("title").fragments()[0].toString());
                            }

                        }

                        blogs.add(blog);
                    }
                    if (blogs.size() > 0) {
                        FacetedPage<T> page = new FacetedPageImpl<>((List<T>) blogs);
                        return page;
                    }
                    return null;
                }
            });
    return pageResult;
}

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

@Test
public void shouldReturnSpecifiedFields() {
    // given/* w w w.  jav  a2  s.  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 w w  w.  j av  a2  s .  c  o  m
    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/* w  ww. java  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));

}