Example usage for org.springframework.data.domain Page getContent

List of usage examples for org.springframework.data.domain Page getContent

Introduction

In this page you can find the example usage for org.springframework.data.domain Page getContent.

Prototype

List<T> getContent();

Source Link

Document

Returns the page content as List .

Usage

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQuery() {
    //given//w  w w.j  a  v  a  2s.  c  o m
    List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30);
    // when
    elasticsearchTemplate.bulkIndex(entities);
    elasticsearchTemplate.refresh(SampleEntity.class);
    // then

    CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria());
    criteriaQuery.addIndices(INDEX_NAME);
    criteriaQuery.addTypes(TYPE_NAME);
    criteriaQuery.setPageable(new PageRequest(0, 10));

    String scrollId = elasticsearchTemplate.scan(criteriaQuery, 1000, false);
    List<SampleEntity> sampleEntities = new ArrayList<>();
    boolean hasRecords = true;
    while (hasRecords) {
        Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 5000L, SampleEntity.class);
        if (page.hasContent()) {
            sampleEntities.addAll(page.getContent());
        } else {
            hasRecords = false;
        }
    }
    elasticsearchTemplate.clearScroll(scrollId);
    assertThat(sampleEntities.size(), is(equalTo(30)));
    assertThat(sampleEntities, containsInAnyOrder(
            entities.stream().map(IndexQuery::getObject).map(Matchers::equalTo).collect(Collectors.toList())));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldReturnDocumentAboveMinimalScoreGivenQuery() {
    // given/*from www  . j a va 2s.c o m*/
    List<IndexQuery> indexQueries = new ArrayList<>();

    indexQueries.add(buildIndex(SampleEntity.builder().id("1").message("ab").build()));
    indexQueries.add(buildIndex(SampleEntity.builder().id("2").message("bc").build()));
    indexQueries.add(buildIndex(SampleEntity.builder().id("3").message("ac").build()));

    elasticsearchTemplate.bulkIndex(indexQueries);
    elasticsearchTemplate.refresh(SampleEntity.class);

    // when
    SearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(
                    boolQuery().must(wildcardQuery("message", "*a*")).should(wildcardQuery("message", "*b*")))
            .withIndices(INDEX_NAME).withTypes(TYPE_NAME).withMinScore(0.5F).build();

    Page<SampleEntity> page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
    // then
    assertThat(page.getTotalElements(), is(1L));
    assertThat(page.getContent().get(0).getMessage(), is("ab"));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldExecuteStringQuery() {
    // given//  w  w w  .  j  av a 2s.co  m
    String documentId = randomNumeric(5);
    SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery = getIndexQuery(sampleEntity);

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

    StringQuery stringQuery = new StringQuery(matchAllQuery().toString());
    // when
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(stringQuery, SampleEntity.class);
    // then
    assertThat(sampleEntities.getTotalElements(), equalTo(1L));
    assertThat(sampleEntities.getContent().get(0), equalTo(sampleEntity));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldDoBulkIndexWithoutId() {
    // given//  w  w  w .  j  av  a  2  s. co m
    List<IndexQuery> indexQueries = new ArrayList<>();
    // first document
    SampleEntity sampleEntity1 = new SampleEntity();
    sampleEntity1.setMessage("some message");
    sampleEntity1.setVersion(System.currentTimeMillis());

    IndexQuery indexQuery1 = new IndexQuery();
    indexQuery1.setObject(sampleEntity1);
    indexQueries.add(indexQuery1);

    // second document
    SampleEntity sampleEntity2 = new SampleEntity();
    sampleEntity2.setMessage("some message");
    sampleEntity2.setVersion(System.currentTimeMillis());

    IndexQuery indexQuery2 = new IndexQuery();
    indexQuery2.setObject(sampleEntity2);
    indexQueries.add(indexQuery2);
    // when
    elasticsearchTemplate.bulkIndex(indexQueries);
    elasticsearchTemplate.refresh(SampleEntity.class);
    // then
    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
    assertThat(sampleEntities.getTotalElements(), is(equalTo(2L)));

    assertThat(sampleEntities.getContent().get(0).getId(), is(notNullValue()));
    assertThat(sampleEntities.getContent().get(1).getId(), is(notNullValue()));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
@Ignore("Missing fields implementation in Jest")
public void shouldUseScriptedFields() {
    // given//  w ww .j a  va2  s.co m
    String documentId = randomNumeric(5);
    SampleEntity sampleEntity = new SampleEntity();
    sampleEntity.setId(documentId);
    sampleEntity.setRate(2);
    sampleEntity.setMessage("some message");
    sampleEntity.setVersion(System.currentTimeMillis());

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

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

    Map<String, Object> params = new HashMap<>();
    params.put("factor", 2);
    // when
    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withScriptField(new ScriptField("scriptedRate",
                    new Script("doc['rate'].value * factor", ScriptService.ScriptType.INLINE, null, params)))
            .build();
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
    // then
    assertThat(sampleEntities.getTotalElements(), equalTo(1L));
    assertThat(sampleEntities.getContent().get(0).getScriptedRate(), equalTo(4L));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldSortResultsGivenSortCriteria() {
    // given//from ww w  .j  a  v  a  2 s.  c  o  m
    List<IndexQuery> indexQueries;
    // first document
    String documentId = randomNumeric(5);
    SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId).message("abc").rate(10)
            .version(System.currentTimeMillis()).build();

    // second document
    String documentId2 = randomNumeric(5);
    SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("xyz").rate(5)
            .version(System.currentTimeMillis()).build();

    // third document
    String documentId3 = randomNumeric(5);
    SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).message("xyz").rate(15)
            .version(System.currentTimeMillis()).build();

    indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3));

    elasticsearchTemplate.bulkIndex(indexQueries);
    elasticsearchTemplate.refresh(SampleEntity.class);

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withSort(new FieldSortBuilder("rate").ignoreUnmapped(true).order(SortOrder.ASC)).build();
    // when
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
    // then
    assertThat(sampleEntities.getTotalElements(), equalTo(3L));
    assertThat(sampleEntities.getContent().get(0).getRate(), is(sampleEntity2.getRate()));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldSortResultsGivenMultipleSortCriteria() {
    // given/*from  w w w  . ja  va 2s . c om*/
    List<IndexQuery> indexQueries;
    // first document
    String documentId = randomNumeric(5);
    SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId).message("abc").rate(10)
            .version(System.currentTimeMillis()).build();

    // second document
    String documentId2 = randomNumeric(5);
    SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("xyz").rate(5)
            .version(System.currentTimeMillis()).build();

    // third document
    String documentId3 = randomNumeric(5);
    SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).message("xyz").rate(15)
            .version(System.currentTimeMillis()).build();

    indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3));

    elasticsearchTemplate.bulkIndex(indexQueries);
    elasticsearchTemplate.refresh(SampleEntity.class);

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withSort(new FieldSortBuilder("rate").ignoreUnmapped(true).order(SortOrder.ASC))
            .withSort(new FieldSortBuilder("message").ignoreUnmapped(true).order(SortOrder.ASC)).build();
    // when
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
    // then
    assertThat(sampleEntities.getTotalElements(), equalTo(3L));
    assertThat(sampleEntities.getContent().get(0).getRate(), is(sampleEntity2.getRate()));
    assertThat(sampleEntities.getContent().get(1).getMessage(), is(sampleEntity1.getMessage()));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldReturnFieldsBasedOnSourceFilter() {
    // given// ww w.jav  a 2s  .c  om
    String documentId = randomNumeric(5);
    String message = "some test message";
    SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message(message)
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery = getIndexQuery(sampleEntity);

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

    FetchSourceFilterBuilder sourceFilter = new FetchSourceFilterBuilder();
    sourceFilter.withIncludes("message");

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices(INDEX_NAME)
            .withTypes(TYPE_NAME).withSourceFilter(sourceFilter.build()).build();
    // when
    Page<SampleEntity> page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
    // then
    assertThat(page, is(notNullValue()));
    assertThat(page.getTotalElements(), is(equalTo(1L)));
    assertThat(page.getContent().get(0).getMessage(), is(message));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldReturnSimilarResultsGivenMoreLikeThisQuery() {
    // given/*from w  w  w  .j ava 2s.  c  om*/
    String sampleMessage = "So we build a web site or an application and want to add search to it, "
            + "and then it hits us: getting search working is hard. We want our search solution to be fast,"
            + " we want a painless setup and a completely free search schema, we want to be able to index data simply using JSON over HTTP, "
            + "we want our search server to be always available, we want to be able to start with one machine and scale to hundreds, "
            + "we want real-time search, we want simple multi-tenancy, and we want a solution that is built for the cloud.";

    String documentId1 = randomNumeric(5);
    SampleEntity sampleEntity = SampleEntity.builder().id(documentId1).message(sampleMessage)
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery = getIndexQuery(sampleEntity);

    elasticsearchTemplate.index(indexQuery);

    String documentId2 = randomNumeric(5);

    elasticsearchTemplate.index(getIndexQuery(SampleEntity.builder().id(documentId2).message(sampleMessage)
            .version(System.currentTimeMillis()).build()));
    elasticsearchTemplate.refresh(SampleEntity.class);

    MoreLikeThisQuery moreLikeThisQuery = new MoreLikeThisQuery();
    moreLikeThisQuery.setId(documentId2);
    moreLikeThisQuery.addFields("message");
    moreLikeThisQuery.setMinDocFreq(1);
    // when
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.moreLikeThis(moreLikeThisQuery,
            SampleEntity.class);

    // then
    assertThat(sampleEntities.getTotalElements(), is(equalTo(1L)));
    assertThat(sampleEntities.getContent(), hasItem(sampleEntity));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldIndexVersionnedEntity() {
    // given//from  w ww . j  a  v  a2s .c om
    String documentId = randomNumeric(5);
    BasicEntity entity = new BasicEntity(documentId, "test");

    IndexQuery indexQuery = new IndexQueryBuilder().withId(documentId).withIndexName(INDEX_NAME)
            .withType(TYPE_NAME).withVersion(entity.getVersion()).withObject(entity).build();

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(INDEX_NAME);

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME).withTypes(TYPE_NAME)
            .withQuery(matchAllQuery()).build();
    // when
    Page<BasicEntity> entities = elasticsearchTemplate.queryForPage(searchQuery, BasicEntity.class);
    // then
    assertThat(entities, is(notNullValue()));
    assertThat(entities.getTotalElements(), greaterThanOrEqualTo(1L));
    assertThat(entities.getContent().get(0).getFirstName(), equalTo(entity.getFirstName()));
    assertThat(entities.getContent().get(0).getVersion(), equalTo(entity.getVersion()));
}