diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java index d6154d2b6..ac798af91 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java @@ -24,7 +24,15 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Optional; +import java.util.Set; import org.apache.http.util.EntityUtils; import org.elasticsearch.action.ActionFuture; @@ -52,6 +60,7 @@ import org.elasticsearch.action.search.SearchScrollRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateResponse; +import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.Requests; import org.elasticsearch.client.Response; import org.elasticsearch.client.RestClient; @@ -69,6 +78,7 @@ import org.elasticsearch.index.query.MoreLikeThisQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.reindex.DeleteByQueryRequest; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder; @@ -85,7 +95,6 @@ import org.springframework.context.ApplicationContextAware; import org.springframework.core.io.ClassPathResource; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.ElasticsearchException; @@ -93,7 +102,6 @@ import org.springframework.data.elasticsearch.annotations.Mapping; import org.springframework.data.elasticsearch.annotations.Setting; import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage; -import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl; import org.springframework.data.elasticsearch.core.client.support.AliasData; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter; @@ -863,47 +871,24 @@ public void delete(DeleteQuery deleteQuery, Class clazz) { : getPersistentEntityFor(clazz).getIndexName(); String typeName = hasText(deleteQuery.getType()) ? deleteQuery.getType() : getPersistentEntityFor(clazz).getIndexType(); - Integer pageSize = deleteQuery.getPageSize() != null ? deleteQuery.getPageSize() : 1000; - Long scrollTimeInMillis = deleteQuery.getScrollTimeInMillis() != null ? deleteQuery.getScrollTimeInMillis() - : 10000l; - SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(deleteQuery.getQuery()).withIndices(indexName) - .withTypes(typeName).withPageable(PageRequest.of(0, pageSize)).build(); + DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(indexName) // + .setDocTypes(typeName) // + .setQuery(deleteQuery.getQuery()) // + .setAbortOnVersionConflict(false) // + .setRefresh(true); - SearchResultMapper deleteEntryResultMapper = new SearchResultMapperAdapter() { + if (deleteQuery.getPageSize() != null) + deleteByQueryRequest.setBatchSize(deleteQuery.getPageSize()); - @Override - public AggregatedPage mapResults(SearchResponse response, Class clazz, Pageable pageable) { - return new AggregatedPageImpl<>((List) Arrays.asList(response.getHits().getHits()), response.getScrollId()); - } - }; - - ScrolledPage scrolledResult = startScroll(scrollTimeInMillis, searchQuery, SearchHit.class, - deleteEntryResultMapper); - BulkRequest request = new BulkRequest(); - List documentsToDelete = new ArrayList<>(); - - do { - documentsToDelete.addAll(scrolledResult.getContent()); - scrolledResult = continueScroll(scrolledResult.getScrollId(), scrollTimeInMillis, - SearchHit.class, deleteEntryResultMapper); - } while (scrolledResult.getContent().size() != 0); - - for (SearchHit entry : documentsToDelete) { - request.add(new DeleteRequest(entry.getIndex(), typeName, entry.getId())); - } + if (deleteQuery.getScrollTimeInMillis() != null) + deleteByQueryRequest.setScroll(TimeValue.timeValueMillis(deleteQuery.getScrollTimeInMillis())); - if (request.numberOfActions() > 0) { - BulkResponse response; - try { - response = client.bulk(request); - checkForBulkUpdateFailure(response); - } catch (IOException e) { - throw new ElasticsearchException("Error while deleting bulk: " + request.toString(), e); - } + try { + client.deleteByQuery(deleteByQueryRequest, RequestOptions.DEFAULT); + } catch (IOException e) { + throw new ElasticsearchException("Error for delete request: " + deleteByQueryRequest.toString(), e); } - - clearScroll(scrolledResult.getScrollId()); } @Override @@ -1475,7 +1460,8 @@ List convertAliasResponse(String aliasResponse) { node = node.findValue("aliases"); Map aliasData = mapper.readValue(mapper.writeValueAsString(node), - new TypeReference>() {}); + new TypeReference>() { + }); Iterable> aliasIter = aliasData.entrySet(); List aliasMetaDataList = new ArrayList(); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index 6370db0a4..c543d84bd 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -24,7 +24,6 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; @@ -68,6 +67,8 @@ import org.elasticsearch.index.query.MoreLikeThisQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.reindex.DeleteByQueryAction; +import org.elasticsearch.index.reindex.DeleteByQueryRequestBuilder; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; @@ -84,7 +85,6 @@ import org.springframework.context.ApplicationContextAware; import org.springframework.core.io.ClassPathResource; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.ElasticsearchException; @@ -92,7 +92,6 @@ import org.springframework.data.elasticsearch.annotations.Mapping; import org.springframework.data.elasticsearch.annotations.Setting; import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage; -import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter; import org.springframework.data.elasticsearch.core.facet.FacetRequest; @@ -750,41 +749,20 @@ public void delete(DeleteQuery deleteQuery, Class clazz) { : getPersistentEntityFor(clazz).getIndexName(); String typeName = !StringUtils.isEmpty(deleteQuery.getType()) ? deleteQuery.getType() : getPersistentEntityFor(clazz).getIndexType(); - Integer pageSize = deleteQuery.getPageSize() != null ? deleteQuery.getPageSize() : 1000; - Long scrollTimeInMillis = deleteQuery.getScrollTimeInMillis() != null ? deleteQuery.getScrollTimeInMillis() - : 10000l; - SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(deleteQuery.getQuery()).withIndices(indexName) - .withTypes(typeName).withPageable(PageRequest.of(0, pageSize)).build(); + DeleteByQueryRequestBuilder requestBuilder = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE) // + .source(indexName) // + .filter(deleteQuery.getQuery()) // + .abortOnVersionConflict(false) // + .refresh(true); - SearchResultMapper deleteEntryResultMapper = new SearchResultMapperAdapter() { + SearchRequestBuilder source = requestBuilder.source() // + .setTypes(typeName); - @Override - public AggregatedPage mapResults(SearchResponse response, Class clazz, Pageable pageable) { - return new AggregatedPageImpl<>((List) Arrays.asList(response.getHits().getHits()), response.getScrollId()); - } - }; - - ScrolledPage scrolledResult = startScroll(scrollTimeInMillis, searchQuery, SearchHit.class, - deleteEntryResultMapper); - BulkRequestBuilder bulkRequestBuilder = client.prepareBulk(); - List documentsToDelete = new ArrayList<>(); - - do { - documentsToDelete.addAll(scrolledResult.getContent()); - scrolledResult = continueScroll(scrolledResult.getScrollId(), scrollTimeInMillis, - SearchHit.class, deleteEntryResultMapper); - } while (scrolledResult.getContent().size() != 0); - - for (SearchHit entry : documentsToDelete) { - bulkRequestBuilder.add(client.prepareDelete(entry.getIndex(), typeName, entry.getId())); - } - - if (bulkRequestBuilder.numberOfActions() > 0) { - bulkRequestBuilder.execute().actionGet(); - } + if (deleteQuery.getScrollTimeInMillis() != null) + source.setScroll(TimeValue.timeValueMillis(deleteQuery.getScrollTimeInMillis())); - clearScroll(scrolledResult.getScrollId()); + requestBuilder.get(); } @Override @@ -1136,14 +1114,14 @@ private void prepareSort(Query query, SearchRequestBuilder searchRequestBuilder) if (FIELD_SCORE.equals(order.getProperty())) { ScoreSortBuilder sort = SortBuilders // - .scoreSort() // - .order(sortOrder); + .scoreSort() // + .order(sortOrder); searchRequestBuilder.addSort(sort); } else { FieldSortBuilder sort = SortBuilders // - .fieldSort(order.getProperty()) // - .order(sortOrder); + .fieldSort(order.getProperty()) // + .order(sortOrder); if (order.getNullHandling() == Sort.NullHandling.NULLS_FIRST) { sort.missing("_first"); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java index 47320f6f9..4179c363e 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java @@ -61,22 +61,7 @@ import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage; import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl; -import org.springframework.data.elasticsearch.core.query.Criteria; -import org.springframework.data.elasticsearch.core.query.CriteriaQuery; -import org.springframework.data.elasticsearch.core.query.DeleteQuery; -import org.springframework.data.elasticsearch.core.query.FetchSourceFilter; -import org.springframework.data.elasticsearch.core.query.FetchSourceFilterBuilder; -import org.springframework.data.elasticsearch.core.query.GetQuery; -import org.springframework.data.elasticsearch.core.query.IndexQuery; -import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder; -import org.springframework.data.elasticsearch.core.query.MoreLikeThisQuery; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; -import org.springframework.data.elasticsearch.core.query.ScriptField; -import org.springframework.data.elasticsearch.core.query.SearchQuery; -import org.springframework.data.elasticsearch.core.query.SourceFilter; -import org.springframework.data.elasticsearch.core.query.StringQuery; -import org.springframework.data.elasticsearch.core.query.UpdateQuery; -import org.springframework.data.elasticsearch.core.query.UpdateQueryBuilder; +import org.springframework.data.elasticsearch.core.query.*; import org.springframework.data.elasticsearch.entities.Book; import org.springframework.data.elasticsearch.entities.GTEVersionEntity; import org.springframework.data.elasticsearch.entities.HetroEntity1; @@ -116,8 +101,29 @@ public class ElasticsearchTemplateTests { private static final String INDEX_3_NAME = "test-index-3"; private static final String TYPE_NAME = "test-type"; - @Autowired - protected ElasticsearchOperations elasticsearchTemplate; + private final SearchResultMapper searchResultMapper = new SearchResultMapperAdapter() { + @Override + public AggregatedPage mapResults(SearchResponse response, Class clazz, Pageable pageable) { + List result = new ArrayList<>(); + for (SearchHit searchHit : response.getHits()) { + if (response.getHits().getHits().length <= 0) { + return new AggregatedPageImpl(Collections.emptyList(), response.getScrollId()); + } + String message = (String) searchHit.getSourceAsMap().get("message"); + SampleEntity sampleEntity = new SampleEntity(); + sampleEntity.setId(searchHit.getId()); + sampleEntity.setMessage(message); + result.add(sampleEntity); + } + + if (result.size() > 0) { + return new AggregatedPageImpl((List) result, response.getScrollId()); + } + return new AggregatedPageImpl(Collections.emptyList(), response.getScrollId()); + } + }; + + @Autowired protected ElasticsearchOperations elasticsearchTemplate; @Before public void before() { @@ -128,7 +134,7 @@ public void before() { elasticsearchTemplate.createIndex(SampleEntityUUIDKeyed.class); elasticsearchTemplate.putMapping(SampleEntityUUIDKeyed.class); } - + @After public void after() { @@ -230,16 +236,12 @@ public void shouldReturnObjectsForGivenIdsUsingMultiGetWithFields() { List indexQueries = new ArrayList<>(); // first document String documentId = randomNumeric(5); - SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId) - .message("some message") - .type("type1") + SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId).message("some message").type("type1") .version(System.currentTimeMillis()).build(); // second document String documentId2 = randomNumeric(5); - SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2) - .message("some message") - .type("type2") + SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("some message").type("type2") .version(System.currentTimeMillis()).build(); indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2)); @@ -248,24 +250,23 @@ public void shouldReturnObjectsForGivenIdsUsingMultiGetWithFields() { elasticsearchTemplate.refresh(SampleEntity.class); // when - SearchQuery query = new NativeSearchQueryBuilder() - .withIds(Arrays.asList(documentId, documentId2)) - .withFields("message", "type") - .build(); - LinkedList sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class, new MultiGetResultMapper() { - @Override - public LinkedList mapResults(MultiGetResponse responses, Class clazz) { - LinkedList list = new LinkedList<>(); - for (MultiGetItemResponse response : responses.getResponses()) { - SampleEntity entity = new SampleEntity(); - entity.setId(response.getResponse().getId()); - entity.setMessage((String) response.getResponse().getSource().get("message")); - entity.setType((String) response.getResponse().getSource().get("type")); - list.add((T) entity); - } - return list; - } - }); + SearchQuery query = new NativeSearchQueryBuilder().withIds(Arrays.asList(documentId, documentId2)) + .withFields("message", "type").build(); + LinkedList sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class, + new MultiGetResultMapper() { + @Override + public LinkedList mapResults(MultiGetResponse responses, Class clazz) { + LinkedList list = new LinkedList<>(); + for (MultiGetItemResponse response : responses.getResponses()) { + SampleEntity entity = new SampleEntity(); + entity.setId(response.getResponse().getId()); + entity.setMessage((String) response.getResponse().getSource().get("message")); + entity.setType((String) response.getResponse().getSource().get("type")); + list.add((T) entity); + } + return list; + } + }); // then assertThat(sampleEntities.size(), is(equalTo(2))); } @@ -298,19 +299,15 @@ public void shouldPassIndicesOptionsForGivenSearchQuery() { SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message") .version(System.currentTimeMillis()).build(); - IndexQuery idxQuery = new IndexQueryBuilder().withIndexName(INDEX_1_NAME) - .withId(sampleEntity.getId()) + IndexQuery idxQuery = new IndexQueryBuilder().withIndexName(INDEX_1_NAME).withId(sampleEntity.getId()) .withObject(sampleEntity).build(); elasticsearchTemplate.index(idxQuery); elasticsearchTemplate.refresh(INDEX_1_NAME); // when - SearchQuery searchQuery = new NativeSearchQueryBuilder() - .withQuery(matchAllQuery()) - .withIndices(INDEX_1_NAME, INDEX_2_NAME) - .withIndicesOptions(IndicesOptions.lenientExpandOpen()) - .build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withIndices(INDEX_1_NAME, INDEX_2_NAME).withIndicesOptions(IndicesOptions.lenientExpandOpen()).build(); Page entities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); // then assertThat(entities, is(notNullValue())); @@ -342,16 +339,14 @@ public void shouldDoBulkIndex() { assertThat(sampleEntities.getTotalElements(), is(equalTo(2L))); } - @Test public void shouldDoBulkUpdate() { - //given + // given String documentId = randomNumeric(5); String messageBeforeUpdate = "some test message"; String messageAfterUpdate = "test message"; - SampleEntity sampleEntity = SampleEntity.builder().id(documentId) - .message(messageBeforeUpdate) + SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message(messageBeforeUpdate) .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); @@ -361,15 +356,15 @@ public void shouldDoBulkUpdate() { IndexRequest indexRequest = new IndexRequest(); indexRequest.source("message", messageAfterUpdate); - UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId) - .withClass(SampleEntity.class).withIndexRequest(indexRequest).build(); + UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId).withClass(SampleEntity.class) + .withIndexRequest(indexRequest).build(); List queries = new ArrayList<>(); queries.add(updateQuery); // when elasticsearchTemplate.bulkUpdate(queries); - //then + // then GetQuery getQuery = new GetQuery(); getQuery.setId(documentId); SampleEntity indexedEntity = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class); @@ -461,7 +456,7 @@ public void shouldDeleteAcrossIndex() { // when DeleteQuery deleteQuery = new DeleteQuery(); deleteQuery.setQuery(termQuery("message", "foo")); - deleteQuery.setType("test-type"); + deleteQuery.setType(TYPE_NAME); deleteQuery.setIndex("test-index-*"); elasticsearchTemplate.delete(deleteQuery); @@ -501,7 +496,7 @@ public void shouldDeleteAcrossIndexWhenNoMatchingDataPresent() { // when DeleteQuery deleteQuery = new DeleteQuery(); deleteQuery.setQuery(termQuery("message", "negative")); - deleteQuery.setType("test-type"); + deleteQuery.setType(TYPE_NAME); deleteQuery.setIndex("test-index-*"); elasticsearchTemplate.delete(deleteQuery); @@ -542,23 +537,17 @@ public void shouldSortResultsGivenSortCriteria() { List indexQueries = new ArrayList<>(); // first document String documentId = randomNumeric(5); - SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId) - .message("abc") - .rate(10) + 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) + 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) + SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).message("xyz").rate(15) .version(System.currentTimeMillis()).build(); indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3)); @@ -581,23 +570,17 @@ public void shouldSortResultsGivenMultipleSortCriteria() { List indexQueries = new ArrayList<>(); // first document String documentId = randomNumeric(5); - SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId) - .message("abc") - .rate(10) + 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) + 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) + SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).message("xyz").rate(15) .version(System.currentTimeMillis()).build(); indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3)); @@ -623,39 +606,26 @@ public void shouldSortResultsGivenNullFirstSortCriteria() { // first document String documentId = randomNumeric(5); - SampleEntity sampleEntity1 = SampleEntity.builder() - .id(documentId) - .message("abc") - .rate(15) - .version(System.currentTimeMillis()) - .build(); + SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId).message("abc").rate(15) + .version(System.currentTimeMillis()).build(); // second document String documentId2 = randomNumeric(5); - SampleEntity sampleEntity2 = SampleEntity.builder() - .id(documentId2) - .message("xyz") - .rate(5) - .version(System.currentTimeMillis()) - .build(); + 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) - .rate(10) - .version(System.currentTimeMillis()) - .build(); + SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).rate(10).version(System.currentTimeMillis()) + .build(); indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3)); elasticsearchTemplate.bulkIndex(indexQueries); elasticsearchTemplate.refresh(SampleEntity.class); - SearchQuery searchQuery = new NativeSearchQueryBuilder() - .withQuery(matchAllQuery()) - .withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsFirst()))) - .build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsFirst()))).build(); // when Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); @@ -673,39 +643,26 @@ public void shouldSortResultsGivenNullLastSortCriteria() { // first document String documentId = randomNumeric(5); - SampleEntity sampleEntity1 = SampleEntity.builder() - .id(documentId) - .message("abc") - .rate(15) - .version(System.currentTimeMillis()) - .build(); + SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId).message("abc").rate(15) + .version(System.currentTimeMillis()).build(); // second document String documentId2 = randomNumeric(5); - SampleEntity sampleEntity2 = SampleEntity.builder() - .id(documentId2) - .message("xyz") - .rate(5) - .version(System.currentTimeMillis()) - .build(); + 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) - .rate(10) - .version(System.currentTimeMillis()) - .build(); + SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).rate(10).version(System.currentTimeMillis()) + .build(); indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3)); elasticsearchTemplate.bulkIndex(indexQueries); elasticsearchTemplate.refresh(SampleEntity.class); - SearchQuery searchQuery = new NativeSearchQueryBuilder() - .withQuery(matchAllQuery()) - .withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsLast()))) - .build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsLast()))).build(); // when Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); @@ -727,10 +684,8 @@ public void shouldSortResultsByScore() { elasticsearchTemplate.bulkIndex(getIndexQueries(entities)); elasticsearchTemplate.refresh(SampleEntity.class); - SearchQuery searchQuery = new NativeSearchQueryBuilder() - .withQuery(matchAllQuery()) - .withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("_score")))) - .build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("_score")))).build(); // when Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); @@ -778,10 +733,8 @@ public void shouldUseScriptedFields() { Map params = new HashMap<>(); params.put("factor", 2); // when - SearchQuery searchQuery = new NativeSearchQueryBuilder() - .withQuery(matchAllQuery()) - .withScriptField(new ScriptField("scriptedRate", - new Script(ScriptType.INLINE, "expression", "doc['rate'] * factor", params))) + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withScriptField( + new ScriptField("scriptedRate", new Script(ScriptType.INLINE, "expression", "doc['rate'] * factor", params))) .build(); Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); // then @@ -825,8 +778,8 @@ public void shouldReturnSortedPageableResultsGivenStringQuery() { elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); - StringQuery stringQuery = new StringQuery(matchAllQuery().toString(), PageRequest.of(0, 10), Sort.by( - Order.asc("message"))); + StringQuery stringQuery = new StringQuery(matchAllQuery().toString(), PageRequest.of(0, 10), + Sort.by(Order.asc("message"))); // when Page sampleEntities = elasticsearchTemplate.queryForPage(stringQuery, SampleEntity.class); // then @@ -861,8 +814,8 @@ public void shouldCreateIndexGivenEntityClass() { final Map setting = elasticsearchTemplate.getSetting(SampleEntity.class); // then assertThat(created, is(true)); - assertThat(setting.get("index.number_of_shards"), Matchers.is("1")); - assertThat(setting.get("index.number_of_replicas"), Matchers.is("0")); + assertThat(setting.get("index.number_of_shards"), Matchers. is("1")); + assertThat(setting.get("index.number_of_replicas"), Matchers. is("0")); } @Test @@ -919,8 +872,8 @@ public void shouldReturnSpecifiedFields() { elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); - SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices(INDEX_NAME_SAMPLE_ENTITY) - .withTypes(TYPE_NAME).withFields("message").build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withIndices(INDEX_NAME_SAMPLE_ENTITY).withTypes(TYPE_NAME).withFields("message").build(); // when Page page = elasticsearchTemplate.queryForPage(searchQuery, String.class, new SearchResultMapperAdapter() { @Override @@ -954,8 +907,8 @@ public void shouldReturnFieldsBasedOnSourceFilter() { FetchSourceFilterBuilder sourceFilter = new FetchSourceFilterBuilder(); sourceFilter.withIncludes("message"); - SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices(INDEX_NAME_SAMPLE_ENTITY) - .withTypes(TYPE_NAME).withSourceFilter(sourceFilter.build()).build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withIndices(INDEX_NAME_SAMPLE_ENTITY).withTypes(TYPE_NAME).withSourceFilter(sourceFilter.build()).build(); // when Page page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); // then @@ -964,7 +917,6 @@ public void shouldReturnFieldsBasedOnSourceFilter() { assertThat(page.getContent().get(0).getMessage(), is(message)); } - @Test public void shouldReturnSimilarResultsGivenMoreLikeThisQuery() { // given @@ -984,8 +936,8 @@ public void shouldReturnSimilarResultsGivenMoreLikeThisQuery() { String documentId2 = randomNumeric(5); - elasticsearchTemplate.index(getIndexQuery(SampleEntity.builder().id(documentId2).message(sampleMessage) - .version(System.currentTimeMillis()).build())); + elasticsearchTemplate.index(getIndexQuery( + SampleEntity.builder().id(documentId2).message(sampleMessage).version(System.currentTimeMillis()).build())); elasticsearchTemplate.refresh(SampleEntity.class); MoreLikeThisQuery moreLikeThisQuery = new MoreLikeThisQuery(); @@ -1005,7 +957,7 @@ public void shouldReturnSimilarResultsGivenMoreLikeThisQuery() { */ @Test public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQuery() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); @@ -1017,11 +969,11 @@ public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQuery() { criteriaQuery.addTypes(TYPE_NAME); criteriaQuery.setPageable(PageRequest.of(0, 10)); - ScrolledPage scroll = elasticsearchTemplate.startScroll( 1000, criteriaQuery, SampleEntity.class); + ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, criteriaQuery, SampleEntity.class); List sampleEntities = new ArrayList<>(); while (scroll.hasContent()) { sampleEntities.addAll(scroll.getContent()); - scroll = elasticsearchTemplate.continueScroll(scroll.getScrollId() , 1000, SampleEntity.class); + scroll = elasticsearchTemplate.continueScroll(scroll.getScrollId(), 1000, SampleEntity.class); } elasticsearchTemplate.clearScroll(scroll.getScrollId()); assertThat(sampleEntities.size(), is(equalTo(30))); @@ -1029,55 +981,32 @@ public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQuery() { @Test public void shouldReturnResultsWithScanAndScrollForGivenSearchQuery() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); elasticsearchTemplate.refresh(SampleEntity.class); // then - SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices(INDEX_NAME_SAMPLE_ENTITY) - .withTypes(TYPE_NAME).withPageable(PageRequest.of(0, 10)).build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withIndices(INDEX_NAME_SAMPLE_ENTITY).withTypes(TYPE_NAME).withPageable(PageRequest.of(0, 10)).build(); ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, searchQuery, SampleEntity.class); List sampleEntities = new ArrayList<>(); while (scroll.hasContent()) { sampleEntities.addAll(scroll.getContent()); - scroll = elasticsearchTemplate.continueScroll(scroll.getScrollId() , 1000, SampleEntity.class); + scroll = elasticsearchTemplate.continueScroll(scroll.getScrollId(), 1000, SampleEntity.class); } elasticsearchTemplate.clearScroll(scroll.getScrollId()); assertThat(sampleEntities.size(), is(equalTo(30))); } - - final SearchResultMapper searchResultMapper = new SearchResultMapperAdapter() { - @Override - public AggregatedPage mapResults(SearchResponse response, Class clazz, Pageable pageable) { - List result = new ArrayList<>(); - for (SearchHit searchHit : response.getHits()) { - if (response.getHits().getHits().length <= 0) { - return new AggregatedPageImpl(Collections.EMPTY_LIST, response.getScrollId()); - } - String message = (String) searchHit.getSourceAsMap().get("message"); - SampleEntity sampleEntity = new SampleEntity(); - sampleEntity.setId(searchHit.getId()); - sampleEntity.setMessage(message); - result.add(sampleEntity); - } - - if (result.size() > 0) { - return new AggregatedPageImpl((List) result, response.getScrollId()); - } - return new AggregatedPageImpl(Collections.emptyList(), response.getScrollId()); - } - }; - /* DATAES-167 */ @Test public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForCriteriaQuery() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); @@ -1090,15 +1019,16 @@ public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForCriteriaQue criteriaQuery.addFields("message"); criteriaQuery.setPageable(PageRequest.of(0, 10)); - ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, criteriaQuery, SampleEntity.class, searchResultMapper); + ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, criteriaQuery, SampleEntity.class, + searchResultMapper); String scrollId = scroll.getScrollId(); List sampleEntities = new ArrayList<>(); - while (scroll.hasContent()) { - sampleEntities.addAll(scroll.getContent()); - scrollId = scroll.getScrollId(); - scroll = elasticsearchTemplate.continueScroll(scrollId , 1000, SampleEntity.class, searchResultMapper); - } - elasticsearchTemplate. clearScroll(scrollId); + while (scroll.hasContent()) { + sampleEntities.addAll(scroll.getContent()); + scrollId = scroll.getScrollId(); + scroll = elasticsearchTemplate.continueScroll(scrollId, 1000, SampleEntity.class, searchResultMapper); + } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); } @@ -1107,7 +1037,7 @@ public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForCriteriaQue */ @Test public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForSearchCriteria() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); @@ -1115,20 +1045,17 @@ public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForSearchCrite // then SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) - .withIndices(INDEX_NAME_SAMPLE_ENTITY) - .withTypes(TYPE_NAME) - .withFields("message") - .withQuery(matchAllQuery()) - .withPageable(PageRequest.of(0, 10)) - .build(); + .withIndices(INDEX_NAME_SAMPLE_ENTITY).withTypes(TYPE_NAME).withFields("message").withQuery(matchAllQuery()) + .withPageable(PageRequest.of(0, 10)).build(); - ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, searchQuery, SampleEntity.class, searchResultMapper); + ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, searchQuery, SampleEntity.class, + searchResultMapper); String scrollId = scroll.getScrollId(); List sampleEntities = new ArrayList<>(); - while (scroll.hasContent()) { - sampleEntities.addAll(scroll.getContent()); - scrollId = scroll.getScrollId(); - scroll = elasticsearchTemplate.continueScroll(scrollId, 1000, SampleEntity.class, searchResultMapper); + while (scroll.hasContent()) { + sampleEntities.addAll(scroll.getContent()); + scrollId = scroll.getScrollId(); + scroll = elasticsearchTemplate.continueScroll(scrollId, 1000, SampleEntity.class, searchResultMapper); } elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); @@ -1139,7 +1066,7 @@ public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForSearchCrite */ @Test public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenCriteriaQuery() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); @@ -1151,13 +1078,14 @@ public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenCri criteriaQuery.addTypes(TYPE_NAME); criteriaQuery.setPageable(PageRequest.of(0, 10)); - ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, criteriaQuery, SampleEntity.class, searchResultMapper); + ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, criteriaQuery, SampleEntity.class, + searchResultMapper); String scrollId = scroll.getScrollId(); List sampleEntities = new ArrayList<>(); - while (scroll.hasContent()) { - sampleEntities.addAll(scroll.getContent()); - scrollId = scroll.getScrollId(); - scroll = elasticsearchTemplate.continueScroll(scrollId, 1000, SampleEntity.class, searchResultMapper); + while (scroll.hasContent()) { + sampleEntities.addAll(scroll.getContent()); + scrollId = scroll.getScrollId(); + scroll = elasticsearchTemplate.continueScroll(scrollId, 1000, SampleEntity.class, searchResultMapper); } elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); @@ -1165,23 +1093,24 @@ public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenCri @Test public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenSearchQuery() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); elasticsearchTemplate.refresh(SampleEntity.class); // then - SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices(INDEX_NAME_SAMPLE_ENTITY) - .withTypes(TYPE_NAME).withPageable(PageRequest.of(0, 10)).build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withIndices(INDEX_NAME_SAMPLE_ENTITY).withTypes(TYPE_NAME).withPageable(PageRequest.of(0, 10)).build(); - ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, searchQuery, SampleEntity.class,searchResultMapper); + ScrolledPage scroll = elasticsearchTemplate.startScroll(1000, searchQuery, SampleEntity.class, + searchResultMapper); String scrollId = scroll.getScrollId(); List sampleEntities = new ArrayList<>(); - while (scroll.hasContent()) { - sampleEntities.addAll(scroll.getContent()); - scrollId = scroll.getScrollId(); - scroll = elasticsearchTemplate.continueScroll(scrollId, 1000, SampleEntity.class, searchResultMapper); + while (scroll.hasContent()) { + sampleEntities.addAll(scroll.getContent()); + scrollId = scroll.getScrollId(); + scroll = elasticsearchTemplate.continueScroll(scrollId, 1000, SampleEntity.class, searchResultMapper); } elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); @@ -1192,7 +1121,7 @@ public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenSea */ @Test public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQueryAndClass() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); @@ -1219,7 +1148,7 @@ public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQueryAndClass() */ @Test public void shouldReturnResultsWithScanAndScrollForGivenSearchQueryAndClass() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); @@ -1246,7 +1175,7 @@ public void shouldReturnResultsWithScanAndScrollForGivenSearchQueryAndClass() { */ @Test public void shouldReturnResultsWithStreamForGivenCriteriaQuery() { - //given + // given List entities = createSampleEntitiesWithMessage("Test message", 30); // when elasticsearchTemplate.bulkIndex(entities); @@ -1289,22 +1218,17 @@ public void shouldReturnListForGivenCriteria() { List indexQueries = new ArrayList<>(); // first document String documentId = randomNumeric(5); - SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId) - .message("test message") + SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId).message("test message") .version(System.currentTimeMillis()).build(); // second document String documentId2 = randomNumeric(5); - SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2) - .message("test test") - .rate(5) + SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("test test").rate(5) .version(System.currentTimeMillis()).build(); // third document String documentId3 = randomNumeric(5); - SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3) - .message("some message") - .rate(15) + SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).message("some message").rate(15) .version(System.currentTimeMillis()).build(); indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3)); @@ -1314,8 +1238,8 @@ public void shouldReturnListForGivenCriteria() { elasticsearchTemplate.refresh(SampleEntity.class); // when CriteriaQuery singleCriteriaQuery = new CriteriaQuery(new Criteria("message").contains("test")); - CriteriaQuery multipleCriteriaQuery = new CriteriaQuery(new Criteria("message").contains("some").and("message") - .contains("message")); + CriteriaQuery multipleCriteriaQuery = new CriteriaQuery( + new Criteria("message").contains("some").and("message").contains("message")); List sampleEntitiesForSingleCriteria = elasticsearchTemplate.queryForList(singleCriteriaQuery, SampleEntity.class); List sampleEntitiesForAndCriteria = elasticsearchTemplate.queryForList(multipleCriteriaQuery, @@ -1330,22 +1254,17 @@ public void shouldReturnListForGivenStringQuery() { // given // first document String documentId = randomNumeric(5); - SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId) - .message("test message") + SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId).message("test message") .version(System.currentTimeMillis()).build(); // second document String documentId2 = randomNumeric(5); - SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2) - .message("test test") - .rate(5) + SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("test test").rate(5) .version(System.currentTimeMillis()).build(); // third document String documentId3 = randomNumeric(5); - SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3) - .message("some message") - .rate(15) + SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).message("some message").rate(15) .version(System.currentTimeMillis()).build(); List indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3)); @@ -1382,13 +1301,12 @@ public void shouldDeleteIndexForGivenEntity() { @Test public void shouldDoPartialUpdateForExistingDocument() { - //given + // given String documentId = randomNumeric(5); String messageBeforeUpdate = "some test message"; String messageAfterUpdate = "test message"; - SampleEntity sampleEntity = SampleEntity.builder().id(documentId) - .message(messageBeforeUpdate) + SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message(messageBeforeUpdate) .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); @@ -1398,11 +1316,11 @@ public void shouldDoPartialUpdateForExistingDocument() { IndexRequest indexRequest = new IndexRequest(); indexRequest.source("message", messageAfterUpdate); - UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId) - .withClass(SampleEntity.class).withIndexRequest(indexRequest).build(); + UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId).withClass(SampleEntity.class) + .withIndexRequest(indexRequest).build(); // when elasticsearchTemplate.update(updateQuery); - //then + // then GetQuery getQuery = new GetQuery(); getQuery.setId(documentId); SampleEntity indexedEntity = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class); @@ -1411,17 +1329,16 @@ public void shouldDoPartialUpdateForExistingDocument() { @Test public void shouldDoUpsertIfDocumentDoesNotExist() { - //given + // given String documentId = randomNumeric(5); String message = "test message"; IndexRequest indexRequest = new IndexRequest(); indexRequest.source("message", message); - UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId) - .withDoUpsert(true).withClass(SampleEntity.class) - .withIndexRequest(indexRequest).build(); - //when + UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId).withDoUpsert(true) + .withClass(SampleEntity.class).withIndexRequest(indexRequest).build(); + // when elasticsearchTemplate.update(updateQuery); - //then + // then GetQuery getQuery = new GetQuery(); getQuery.setId(documentId); SampleEntity indexedEntity = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class); @@ -1431,13 +1348,12 @@ public void shouldDoUpsertIfDocumentDoesNotExist() { @Test public void shouldReturnHighlightedFieldsForGivenQueryAndFields() { - //given + // given String documentId = randomNumeric(5); String actualMessage = "some test message"; String highlightedMessage = "some test message"; - SampleEntity sampleEntity = SampleEntity.builder().id(documentId) - .message(actualMessage) + SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message(actualMessage) .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); @@ -1446,32 +1362,30 @@ public void shouldReturnHighlightedFieldsForGivenQueryAndFields() { elasticsearchTemplate.refresh(SampleEntity.class); final List message = new HighlightBuilder().field("message").fields(); - SearchQuery searchQuery = new NativeSearchQueryBuilder() - .withQuery(termQuery("message", "test")) - .withHighlightFields(message.toArray(new HighlightBuilder.Field[message.size()])) - .build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "test")) + .withHighlightFields(message.toArray(new HighlightBuilder.Field[message.size()])).build(); Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class, new SearchResultMapperAdapter() { - @Override - public AggregatedPage mapResults(SearchResponse response, Class clazz, Pageable pageable) { - List chunk = new ArrayList<>(); - for (SearchHit searchHit : response.getHits()) { - if (response.getHits().getHits().length <= 0) { + @Override + public AggregatedPage mapResults(SearchResponse response, Class clazz, Pageable pageable) { + List chunk = new ArrayList<>(); + 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.getSourceAsMap().get("message")); + user.setHighlightedMessage(searchHit.getHighlightFields().get("message").fragments()[0].toString()); + chunk.add(user); + } + if (chunk.size() > 0) { + return new AggregatedPageImpl<>((List) chunk); + } return null; } - SampleEntity user = new SampleEntity(); - user.setId(searchHit.getId()); - user.setMessage((String) searchHit.getSourceAsMap().get("message")); - user.setHighlightedMessage(searchHit.getHighlightFields().get("message").fragments()[0].toString()); - chunk.add(user); - } - if (chunk.size() > 0) { - return new AggregatedPageImpl<>((List) chunk); - } - return null; - } - }); + }); assertThat(sampleEntities.getContent().get(0).getHighlightedMessage(), is(highlightedMessage)); } @@ -1486,12 +1400,8 @@ public void shouldReturnMultipleHighlightFields() { String highlightedType = "some test type"; String highlightedMessage = "some test message"; - SampleEntity sampleEntity = SampleEntity.builder() - .id(documentId) - .type(actualType) - .message(actualMessage) - .version(System.currentTimeMillis()) - .build(); + SampleEntity sampleEntity = SampleEntity.builder().id(documentId).type(actualType).message(actualMessage) + .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); @@ -1499,14 +1409,8 @@ public void shouldReturnMultipleHighlightFields() { elasticsearchTemplate.refresh(SampleEntity.class); SearchQuery searchQuery = new NativeSearchQueryBuilder() - .withQuery( - boolQuery() - .must(termQuery("type", "test")) - .must(termQuery("message", "test"))) - .withHighlightFields( - new HighlightBuilder.Field("type"), - new HighlightBuilder.Field("message")) - .build(); + .withQuery(boolQuery().must(termQuery("type", "test")).must(termQuery("message", "test"))) + .withHighlightFields(new HighlightBuilder.Field("type"), new HighlightBuilder.Field("message")).build(); // when elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class, new SearchResultMapperAdapter() { @@ -1536,22 +1440,17 @@ public void shouldHonorTheHighlightBuilderOptions() { String actualMessage = "some test message with unsafe