From 807b194e80fae3779da6e5dd3e78e16cbb560218 Mon Sep 17 00:00:00 2001 From: Mohsin Husen Date: Sun, 21 Apr 2013 12:38:09 +0100 Subject: [PATCH] refactored, created searchQuery interface based, NativeSearchQueryBuilder support --- .../core/ElasticsearchTemplate.java | 48 +++++----- .../core/query/AbstractQuery.java | 1 - .../core/query/CriteriaQuery.java | 2 +- .../elasticsearch/core/query/DeleteQuery.java | 10 +- .../core/query/NativeSearchQuery.java | 53 +++++++++++ .../core/query/NativeSearchQueryBuilder.java | 91 +++++++++++++++++++ .../elasticsearch/core/query/SearchQuery.java | 55 +---------- .../repository/ElasticsearchRepository.java | 4 +- .../SimpleElasticsearchRepository.java | 51 ++++++----- .../core/ElasticsearchTemplateTest.java | 63 ++++++------- .../core/query/CriteriaQueryTest.java | 2 +- .../CustomMethodRepositoryTest.java | 4 +- .../SimpleElasticsearchRepositoryTest.java | 21 +++-- 13 files changed, 252 insertions(+), 153 deletions(-) create mode 100644 src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java create mode 100644 src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java 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 b1be40ba3..0b08fe28f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -143,13 +143,13 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { @Override public Page queryForPage(SearchQuery query, Class clazz) { - SearchResponse response = doSearch(prepareSearch(query,clazz), query.getElasticsearchQuery(), query.getElasticsearchFilter(),query.getElasticsearchSort()); + SearchResponse response = doSearch(prepareSearch(query,clazz), query.getQuery(), query.getFilter(), query.getElasticsearchSort()); return mapResults(response, clazz, query.getPageable()); } @Override public Page queryForPage(SearchQuery query, ResultsMapper resultsMapper) { - SearchResponse response = doSearch(prepareSearch(query), query.getElasticsearchQuery(), query.getElasticsearchFilter(),query.getElasticsearchSort()); + SearchResponse response = doSearch(prepareSearch(query), query.getQuery(), query.getFilter(), query.getElasticsearchSort()); return resultsMapper.mapResults(response); } @@ -166,22 +166,22 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { @Override public List queryForIds(SearchQuery query) { - SearchRequestBuilder request = prepareSearch(query).setQuery(query.getElasticsearchQuery()) + SearchRequestBuilder request = prepareSearch(query).setQuery(query.getQuery()) .setNoFields(); - if(query.getElasticsearchFilter() != null){ - request.setFilter(query.getElasticsearchFilter()); + if(query.getFilter() != null){ + request.setFilter(query.getFilter()); } SearchResponse response = request.execute().actionGet(); return extractIds(response); } @Override - public Page queryForPage(CriteriaQuery query, Class clazz) { - QueryBuilder elasticsearchQuery = new CriteriaQueryProcessor().createQueryFromCriteria(query.getCriteria()); - SearchResponse response = prepareSearch(query,clazz) - .setQuery(elasticsearchQuery) + public Page queryForPage(CriteriaQuery criteriaQuery, Class clazz) { + QueryBuilder query = new CriteriaQueryProcessor().createQueryFromCriteria(criteriaQuery.getCriteria()); + SearchResponse response = prepareSearch(criteriaQuery,clazz) + .setQuery(query) .execute().actionGet(); - return mapResults(response, clazz, query.getPageable()); + return mapResults(response, clazz, criteriaQuery.getPageable()); } @Override @@ -197,8 +197,8 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { ElasticsearchPersistentEntity persistentEntity = getPersistentEntityFor(clazz); CountRequestBuilder countRequestBuilder = client.prepareCount(persistentEntity.getIndexName()) .setTypes(persistentEntity.getIndexType()); - if(query.getElasticsearchQuery() != null){ - countRequestBuilder.setQuery(query.getElasticsearchQuery()); + if(query.getQuery() != null){ + countRequestBuilder.setQuery(query.getQuery()); } return countRequestBuilder.execute().actionGet().count(); } @@ -254,30 +254,30 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { } @Override - public void delete(DeleteQuery query, Class clazz) { + public void delete(DeleteQuery deleteQuery, Class clazz) { ElasticsearchPersistentEntity persistentEntity = getPersistentEntityFor(clazz); client.prepareDeleteByQuery(persistentEntity.getIndexName()) .setTypes(persistentEntity.getIndexType()) - .setQuery(query.getElasticsearchQuery()) + .setQuery(deleteQuery.getQuery()) .execute().actionGet(); } @Override - public String scan(SearchQuery query, long scrollTimeInMillis, boolean noFields) { - Assert.notNull(query.getIndices(), "No index defined for Query"); - Assert.notNull(query.getTypes(), "No type define for Query"); - Assert.notNull(query.getPageable(), "Query.pageable is required for scan & scroll"); + public String scan(SearchQuery searchQuery, long scrollTimeInMillis, boolean noFields) { + Assert.notNull(searchQuery.getIndices(), "No index defined for Query"); + Assert.notNull(searchQuery.getTypes(), "No type define for Query"); + Assert.notNull(searchQuery.getPageable(), "Query.pageable is required for scan & scroll"); - SearchRequestBuilder requestBuilder = client.prepareSearch(toArray(query.getIndices())) + SearchRequestBuilder requestBuilder = client.prepareSearch(toArray(searchQuery.getIndices())) .setSearchType(SCAN) - .setQuery(query.getElasticsearchQuery()) - .setTypes(toArray(query.getTypes())) + .setQuery(searchQuery.getQuery()) + .setTypes(toArray(searchQuery.getTypes())) .setScroll(TimeValue.timeValueMillis(scrollTimeInMillis)) .setFrom(0) - .setSize(query.getPageable().getPageSize()); + .setSize(searchQuery.getPageable().getPageSize()); - if(query.getElasticsearchFilter() != null){ - requestBuilder.setFilter(query.getElasticsearchFilter()); + if(searchQuery.getFilter() != null){ + requestBuilder.setFilter(searchQuery.getFilter()); } if(noFields){ diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java index 6e802c5fa..280654b1c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java @@ -15,7 +15,6 @@ */ package org.springframework.data.elasticsearch.core.query; -import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.util.Assert; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/CriteriaQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/CriteriaQuery.java index 0a75ce672..bc7067261 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/CriteriaQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/CriteriaQuery.java @@ -25,7 +25,7 @@ import org.springframework.util.Assert; * @author Rizwan Idrees * @author Mohsin Husen */ -public class CriteriaQuery extends AbstractQuery implements Query { +public class CriteriaQuery extends AbstractQuery{ private Criteria criteria; private CriteriaQuery() { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java index 0a34b4b8b..facdef12e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java @@ -25,13 +25,13 @@ import org.elasticsearch.index.query.QueryBuilder; */ public class DeleteQuery{ - private QueryBuilder elasticsearchQuery; + private QueryBuilder query; - public QueryBuilder getElasticsearchQuery() { - return elasticsearchQuery; + public QueryBuilder getQuery() { + return query; } - public void setElasticsearchQuery(QueryBuilder elasticsearchQuery) { - this.elasticsearchQuery = elasticsearchQuery; + public void setQuery(QueryBuilder query) { + this.query = query; } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java new file mode 100644 index 000000000..7b62ba573 --- /dev/null +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java @@ -0,0 +1,53 @@ +/* +* Copyright 2013 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.data.elasticsearch.core.query; + + +import org.elasticsearch.index.query.FilterBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.search.sort.SortBuilder; + +/** + * NativeSearchQuery + * + * @author Rizwan Idrees + * @author Mohsin Husen + */ +public class NativeSearchQuery extends AbstractQuery implements SearchQuery { + + private QueryBuilder query; + private FilterBuilder filter; + private SortBuilder sort; + + public NativeSearchQuery(QueryBuilder query, FilterBuilder filter, SortBuilder sort) { + this.query = query; + this.filter = filter; + this.sort = sort; + } + + public QueryBuilder getQuery() { + return query; + } + + + public FilterBuilder getFilter() { + return filter; + } + + public SortBuilder getElasticsearchSort() { + return sort; + } +} diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java new file mode 100644 index 000000000..6eb63fe6f --- /dev/null +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java @@ -0,0 +1,91 @@ +/* +* Copyright 2013 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.data.elasticsearch.core.query; + +import org.elasticsearch.index.query.FilterBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.search.sort.SortBuilder; +import org.springframework.data.domain.Pageable; + +/** + * NativeSearchQuery + * + * @author Rizwan Idrees + * @author Mohsin Husen + */ + +public class NativeSearchQueryBuilder { + + private QueryBuilder queryBuilder; + private FilterBuilder filterBuilder; + private SortBuilder sortBuilder; + private Pageable pageable; + private String[] indices; + private String[] types; + private String[] fields; + + public NativeSearchQueryBuilder withQuery(QueryBuilder queryBuilder){ + this.queryBuilder = queryBuilder; + return this; + } + + public NativeSearchQueryBuilder withFilter(FilterBuilder filterBuilder){ + this.filterBuilder = filterBuilder; + return this; + } + + public NativeSearchQueryBuilder withSort(SortBuilder sortBuilder){ + this.sortBuilder = sortBuilder; + return this; + } + + public NativeSearchQueryBuilder withPageable(Pageable pageable){ + this.pageable = pageable; + return this; + } + + public NativeSearchQueryBuilder withIndices(String... indices){ + this.indices = indices; + return this; + } + + public NativeSearchQueryBuilder withTypes(String... types){ + this.types = types; + return this; + } + + public NativeSearchQueryBuilder withFields(String... fields){ + this.fields = fields; + return this; + } + + public NativeSearchQuery build(){ + NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryBuilder,filterBuilder,sortBuilder); + if(pageable != null){ + nativeSearchQuery.setPageable(pageable); + } + if(indices != null) { + nativeSearchQuery.addIndices(indices); + } + if(types != null) { + nativeSearchQuery.addTypes(types); + } + if(fields != null) { + nativeSearchQuery.addFields(fields); + } + return nativeSearchQuery; + } +} diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/SearchQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/SearchQuery.java index 87d6dc19f..0557993d9 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/SearchQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/SearchQuery.java @@ -1,58 +1,11 @@ -/* -* Copyright 2013 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ package org.springframework.data.elasticsearch.core.query; - import org.elasticsearch.index.query.FilterBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.search.sort.SortBuilder; -/** - * SearchQuery - * - * @author Rizwan Idrees - * @author Mohsin Husen - */ -public class SearchQuery extends AbstractQuery{ - - private QueryBuilder elasticsearchQuery; - private FilterBuilder elasticsearchFilter; - private SortBuilder elasticsearchSort; - - public QueryBuilder getElasticsearchQuery() { - return elasticsearchQuery; - } - - public void setElasticsearchQuery(QueryBuilder elasticsearchQuery) { - this.elasticsearchQuery = elasticsearchQuery; - } - - public FilterBuilder getElasticsearchFilter() { - return elasticsearchFilter; - } - - public void setElasticsearchFilter(FilterBuilder elasticsearchFilter) { - this.elasticsearchFilter = elasticsearchFilter; - } - - public SortBuilder getElasticsearchSort() { - return elasticsearchSort; - } - - public void setElasticsearchSort(SortBuilder elasticsearchSort) { - this.elasticsearchSort = elasticsearchSort; - } +public interface SearchQuery extends Query { + QueryBuilder getQuery(); + FilterBuilder getFilter(); + SortBuilder getElasticsearchSort(); } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java index b5aff9e10..4ecf48706 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java @@ -35,9 +35,9 @@ public interface ElasticsearchRepository extends Ela S index(S entity); - Iterable search(QueryBuilder elasticsearchQuery); + Iterable search(QueryBuilder query); - Page search(QueryBuilder elasticsearchQuery, Pageable pageable); + Page search(QueryBuilder query, Pageable pageable); Page search(SearchQuery searchQuery); diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java index f97cec75a..2b90ed987 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java @@ -92,9 +92,10 @@ public class SimpleElasticsearchRepository implements ElasticsearchRepository @Override public Page findAll(Pageable pageable) { - SearchQuery query = new SearchQuery(); - query.setElasticsearchQuery(matchAllQuery()); - query.setPageable(pageable); + SearchQuery query = new NativeSearchQueryBuilder() + .withQuery(matchAllQuery()) + .withPageable(pageable) + .build(); return elasticsearchOperations.queryForPage(query, getEntityClass()); } @@ -104,22 +105,25 @@ public class SimpleElasticsearchRepository implements ElasticsearchRepository if (itemCount == 0) { return new PageImpl(Collections. emptyList()); } - SearchQuery query = new SearchQuery(); - query.setElasticsearchQuery(matchAllQuery()); - query.setPageable(new PageRequest(0,itemCount, sort)); + SearchQuery query = new NativeSearchQueryBuilder() + .withQuery(matchAllQuery()) + .withPageable(new PageRequest(0,itemCount, sort)) + .build(); return elasticsearchOperations.queryForPage(query, getEntityClass()); } @Override public Iterable findAll(Iterable ids) { - SearchQuery query = new SearchQuery(); - query.setElasticsearchQuery(inQuery(entityInformation.getIdAttribute(), ids)); + SearchQuery query = new NativeSearchQueryBuilder() + .withQuery(inQuery(entityInformation.getIdAttribute(), ids)) + .build(); return elasticsearchOperations.queryForPage(query, getEntityClass()); } @Override public long count() { - SearchQuery query = new SearchQuery(); + SearchQuery query = new NativeSearchQueryBuilder() + .withQuery(matchAllQuery()).build(); return elasticsearchOperations.count(query,getEntityClass()); } @@ -169,23 +173,24 @@ public class SimpleElasticsearchRepository implements ElasticsearchRepository } @Override - public Iterable search(QueryBuilder elasticsearchQuery) { - SearchQuery query = new SearchQuery(); - int count = (int) elasticsearchOperations.count(query, getEntityClass()); + public Iterable search(QueryBuilder query) { + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(query).build(); + int count = (int) elasticsearchOperations.count(searchQuery, getEntityClass()); if(count == 0){ return new PageImpl(Collections.emptyList()); } - query.setPageable(new PageRequest(0,count)); - query.setElasticsearchQuery(elasticsearchQuery); - return elasticsearchOperations.queryForPage(query, getEntityClass()); + searchQuery.setPageable(new PageRequest(0, count)); + return elasticsearchOperations.queryForPage(searchQuery, getEntityClass()); } @Override - public Page search(QueryBuilder elasticsearchQuery, Pageable pageable) { - SearchQuery query = new SearchQuery(); - query.setElasticsearchQuery(elasticsearchQuery); - query.setPageable(pageable); - return elasticsearchOperations.queryForPage(query, getEntityClass()); + public Page search(QueryBuilder query, Pageable pageable) { + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(query) + .withPageable(pageable) + .build(); + return elasticsearchOperations.queryForPage(searchQuery, getEntityClass()); } @Override @@ -233,9 +238,9 @@ public class SimpleElasticsearchRepository implements ElasticsearchRepository @Override public void deleteAll() { - DeleteQuery query = new DeleteQuery(); - query.setElasticsearchQuery(matchAllQuery()); - elasticsearchOperations.delete(query, getEntityClass()); + DeleteQuery deleteQuery = new DeleteQuery(); + deleteQuery.setQuery(matchAllQuery()); + elasticsearchOperations.delete(deleteQuery, getEntityClass()); elasticsearchOperations.refresh(entityInformation.getIndexName(),true); } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTest.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTest.java index cee9f3a70..4b22025cc 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTest.java @@ -19,7 +19,6 @@ package org.springframework.data.elasticsearch.core; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.sort.FieldSortBuilder; -import org.elasticsearch.search.sort.SortBuilder; import org.elasticsearch.search.sort.SortOrder; import org.junit.Before; import org.junit.Ignore; @@ -61,7 +60,7 @@ public class ElasticsearchTemplateTest { public void before(){ elasticsearchTemplate.createIndex(SampleEntity.class); DeleteQuery deleteQuery = new DeleteQuery(); - deleteQuery.setElasticsearchQuery(matchAllQuery()); + deleteQuery.setQuery(matchAllQuery()); elasticsearchTemplate.delete(deleteQuery,SampleEntity.class); elasticsearchTemplate.refresh(SampleEntity.class, true); } @@ -79,8 +78,7 @@ public class ElasticsearchTemplateTest { indexQuery.setObject(sampleEntity); elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class, true); - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(matchAllQuery()); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build(); //when long count = elasticsearchTemplate.count(searchQuery, SampleEntity.class); //then @@ -126,8 +124,7 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class, true); - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(matchAllQuery()); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build(); //when Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); //then @@ -167,8 +164,7 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.bulkIndex(indexQueries); elasticsearchTemplate.refresh(SampleEntity.class,true); //then - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(matchAllQuery()); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build(); Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class); assertThat(sampleEntities.getTotalElements(), is(equalTo(2L))); } @@ -191,8 +187,7 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.delete("test-index","test-type",documentId); elasticsearchTemplate.refresh(SampleEntity.class, true); //then - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(fieldQuery("id", documentId)); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build(); Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class); assertThat(sampleEntities.getTotalElements(), equalTo(0L)); } @@ -215,8 +210,7 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.delete(SampleEntity.class,documentId); elasticsearchTemplate.refresh(SampleEntity.class, true); //then - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(fieldQuery("id", documentId)); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build(); Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class); assertThat(sampleEntities.getTotalElements(), equalTo(0L)); } @@ -237,17 +231,16 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.index(indexQuery); //when DeleteQuery deleteQuery = new DeleteQuery(); - deleteQuery.setElasticsearchQuery(fieldQuery("id", documentId)); + deleteQuery.setQuery(fieldQuery("id", documentId)); elasticsearchTemplate.delete(deleteQuery,SampleEntity.class); //then - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(fieldQuery("id",documentId)); + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id",documentId)).build(); Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class); assertThat(sampleEntities.getTotalElements(), equalTo(0L)); } @Test - public void shouldFilterSearchResultsGivenFilter(){ + public void shouldFilterSearchResultsForGivenFilter(){ //given String documentId = randomNumeric(5); SampleEntity sampleEntity = new SampleEntity(); @@ -261,9 +254,10 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class, true); - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(matchAllQuery()); - searchQuery.setElasticsearchFilter(boolFilter().must(termFilter("id", documentId))); + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchAllQuery()) + .withFilter(boolFilter().must(termFilter("id", documentId))) + .build(); //when Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class); //then @@ -317,11 +311,10 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.bulkIndex(indexQueries); elasticsearchTemplate.refresh(SampleEntity.class, true); - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(matchAllQuery()); - SortBuilder sortBuilder = new FieldSortBuilder("rate").ignoreUnmapped(true).order(SortOrder.ASC); - - searchQuery.setElasticsearchSort(sortBuilder); + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchAllQuery()) + .withSort(new FieldSortBuilder("rate").ignoreUnmapped(true).order(SortOrder.ASC)) + .build(); //when Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class); //then @@ -473,11 +466,12 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class, true); - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(matchAllQuery()); - searchQuery.addFields("message"); - searchQuery.addIndices("test-index"); - searchQuery.addTypes("test-type"); + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchAllQuery()) + .withIndices("test-index") + .withTypes("test-type") + .withFields("message") + .build(); //when Page page = elasticsearchTemplate.queryForPage(searchQuery, new ResultsMapper() { @Override @@ -575,11 +569,12 @@ public class ElasticsearchTemplateTest { elasticsearchTemplate.refresh(SampleEntity.class,true); //then - SearchQuery searchQuery = new SearchQuery(); - searchQuery.addIndices("test-index"); - searchQuery.addTypes("test-type"); - searchQuery.setElasticsearchQuery(matchAllQuery()); - searchQuery.setPageable(new PageRequest(0,1)); + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchAllQuery()) + .withIndices("test-index") + .withTypes("test-type") + .withPageable(new PageRequest(0,1)) + .build(); String scrollId = elasticsearchTemplate.scan(searchQuery,1000,false); List sampleEntities = new ArrayList(); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/CriteriaQueryTest.java b/src/test/java/org/springframework/data/elasticsearch/core/query/CriteriaQueryTest.java index e9ef419d5..dfaa1afaf 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/CriteriaQueryTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/CriteriaQueryTest.java @@ -51,7 +51,7 @@ public class CriteriaQueryTest { public void before(){ elasticsearchTemplate.createIndex(SampleEntity.class); DeleteQuery deleteQuery = new DeleteQuery(); - deleteQuery.setElasticsearchQuery(matchAllQuery()); + deleteQuery.setQuery(matchAllQuery()); elasticsearchTemplate.delete(deleteQuery,SampleEntity.class); elasticsearchTemplate.refresh(SampleEntity.class, true); } diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/CustomMethodRepositoryTest.java b/src/test/java/org/springframework/data/elasticsearch/repositories/CustomMethodRepositoryTest.java index f5a7435db..af369a23a 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/CustomMethodRepositoryTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/CustomMethodRepositoryTest.java @@ -17,7 +17,6 @@ package org.springframework.data.elasticsearch.repositories; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +30,6 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; - import java.util.Arrays; import java.util.List; @@ -58,7 +56,7 @@ public class CustomMethodRepositoryTest { public void before(){ elasticsearchTemplate.createIndex(SampleEntity.class); DeleteQuery deleteQuery = new DeleteQuery(); - deleteQuery.setElasticsearchQuery(matchAllQuery()); + deleteQuery.setQuery(matchAllQuery()); elasticsearchTemplate.delete(deleteQuery,SampleEntity.class); elasticsearchTemplate.refresh(SampleEntity.class, true); } diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepositoryTest.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepositoryTest.java index 932145cc7..d8d1c0feb 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepositoryTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepositoryTest.java @@ -24,6 +24,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.SampleEntity; +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.data.elasticsearch.repositories.SampleElasticsearchRepository; import org.springframework.test.context.ContextConfiguration; @@ -162,8 +163,9 @@ public class SimpleElasticsearchRepositoryTest { sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); - SearchQuery query = new SearchQuery(); - query.setElasticsearchQuery(termQuery("message", "test")); + SearchQuery query = new NativeSearchQueryBuilder() + .withQuery(termQuery("message", "test")) + .build(); //when Page page = repository.search(query); //then @@ -263,8 +265,9 @@ public class SimpleElasticsearchRepositoryTest { sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); //when - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(fieldQuery("id",documentId)); + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(fieldQuery("id",documentId)) + .build(); Page sampleEntities= repository.search(searchQuery); //then assertThat(sampleEntities.getTotalElements(), equalTo(1L)); @@ -275,8 +278,9 @@ public class SimpleElasticsearchRepositoryTest { //when repository.deleteAll(); //then - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(matchAllQuery()); + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchAllQuery()) + .build(); Page sampleEntities= repository.search(searchQuery); assertThat(sampleEntities.getTotalElements(), equalTo(0L)); } @@ -293,8 +297,9 @@ public class SimpleElasticsearchRepositoryTest { //when repository.delete(sampleEntity); //then - SearchQuery searchQuery = new SearchQuery(); - searchQuery.setElasticsearchQuery(fieldQuery("id", documentId)); + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(fieldQuery("id", documentId)) + .build(); Page sampleEntities= repository.search(searchQuery); assertThat(sampleEntities.getTotalElements(),equalTo(0L)); }