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 bcb936a8e..6e802c5fa 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 @@ -33,8 +33,6 @@ import static org.apache.commons.collections.CollectionUtils.addAll; */ abstract class AbstractQuery implements Query{ - private static final Pageable DEFAULT_PAGE = new PageRequest(0, DEFAULT_PAGE_SIZE); - protected Pageable pageable = DEFAULT_PAGE; protected Sort sort; protected List indices = new ArrayList(); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java index c068624d1..3133a3a72 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java @@ -16,14 +16,13 @@ package org.springframework.data.elasticsearch.core.query; -import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import java.util.ArrayList; import java.util.List; import static org.apache.commons.collections.CollectionUtils.addAll; -import static org.springframework.data.elasticsearch.core.query.Query.DEFAULT_PAGE_SIZE; +import static org.springframework.data.elasticsearch.core.query.Query.DEFAULT_PAGE; /** * MoreLikeThisQuery @@ -50,7 +49,7 @@ public class MoreLikeThisQuery { private Integer minWordLen; private Integer maxWordLen; private Float boostTerms; - private Pageable pageable = new PageRequest(0, DEFAULT_PAGE_SIZE); + private Pageable pageable = DEFAULT_PAGE; public String getId() { return id; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java index 7c46b6580..c9f47d56f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java @@ -17,6 +17,7 @@ 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; @@ -29,7 +30,8 @@ import java.util.List; */ public interface Query { - int DEFAULT_PAGE_SIZE = 10; + public static final int DEFAULT_PAGE_SIZE = 10; + public static final Pageable DEFAULT_PAGE = new PageRequest(0, DEFAULT_PAGE_SIZE); /** 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 416503a53..b5aff9e10 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java @@ -42,4 +42,6 @@ public interface ElasticsearchRepository extends Ela Page search(SearchQuery searchQuery); Page searchSimilar(T entity); + + Page searchSimilar(T entity, Pageable pageable); } 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 e3cc14ef5..26a602615 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 @@ -32,6 +32,7 @@ import java.util.List; import static org.elasticsearch.index.query.QueryBuilders.inQuery; import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery; +import static org.springframework.data.elasticsearch.core.query.Query.DEFAULT_PAGE; /** * Elasticsearch specific repository implementation. Likely to be used as target within {@link ElasticsearchRepositoryFactory} @@ -185,12 +186,20 @@ public class SimpleElasticsearchRepository implements ElasticsearchRepository @Override public Page searchSimilar(T entity) { + return searchSimilar(entity, DEFAULT_PAGE); + } + + @Override + public Page searchSimilar(T entity, Pageable pageable) { Assert.notNull(entity, "Cannot search similar records for 'null'."); + Assert.notNull(entity, "Pageable cannot be 'null'"); MoreLikeThisQuery query = new MoreLikeThisQuery(); query.setId(extractIdFromBean(entity)); + query.setPageable(pageable); return elasticsearchOperations.moreLikeThis(query, getEntityClass()); } + @Override public void delete(String id) { Assert.notNull(id, "Cannot delete entity with id 'null'.");