List of usage examples for org.springframework.data.elasticsearch.core ResultsMapper ResultsMapper
ResultsMapper
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)); }