Skip to content

Commit e96d09f

Browse files
authored
SearchPage result in StringQuery methods.
Original Pull Request #1812 Closes #1811
1 parent 38b1763 commit e96d09f

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchStringQuery.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,12 @@ public Object execute(Object[] parameters) {
7474
} else if (queryMethod.isPageQuery()) {
7575
stringQuery.setPageable(accessor.getPageable());
7676
SearchHits<?> searchHits = elasticsearchOperations.search(stringQuery, clazz, index);
77-
result = SearchHitSupport.searchPageFor(searchHits, stringQuery.getPageable());
77+
if (queryMethod.isSearchPageMethod()) {
78+
result = SearchHitSupport.searchPageFor(searchHits, stringQuery.getPageable());
79+
} else {
80+
result = SearchHitSupport
81+
.unwrapSearchHits(SearchHitSupport.searchPageFor(searchHits, stringQuery.getPageable()));
82+
}
7883
} else if (queryMethod.isStreamQuery()) {
7984
if (accessor.getPageable().isUnpaged()) {
8085
stringQuery.setPageable(PageRequest.of(0, DEFAULT_STREAM_BATCH_SIZE));
@@ -91,7 +96,9 @@ public Object execute(Object[] parameters) {
9196
result = elasticsearchOperations.searchOne(stringQuery, clazz, index);
9297
}
9398

94-
return queryMethod.isNotSearchHitMethod() ? SearchHitSupport.unwrapSearchHits(result) : result;
99+
return (queryMethod.isNotSearchHitMethod() && queryMethod.isNotSearchPageMethod())
100+
? SearchHitSupport.unwrapSearchHits(result)
101+
: result;
95102
}
96103

97104
protected StringQuery createQuery(ParametersParameterAccessor parameterAccessor) {

src/test/java/org/springframework/data/elasticsearch/repositories/custommethod/CustomMethodRepositoryBaseTests.java

+21-3
Original file line numberDiff line numberDiff line change
@@ -1593,11 +1593,27 @@ void shouldReturnSearchPage() {
15931593
assertThat((nextPageable.getPageNumber())).isEqualTo(1);
15941594
}
15951595

1596+
@Test // #1811
1597+
@DisplayName("should return SearchPage with query")
1598+
void shouldReturnSearchPageWithQuery() {
1599+
List<SampleEntity> entities = createSampleEntities("abc", 20);
1600+
repository.saveAll(entities);
1601+
1602+
SearchPage<SampleEntity> searchPage = repository.searchWithQueryByMessage("Message", PageRequest.of(0, 10));
1603+
1604+
assertThat(searchPage).isNotNull();
1605+
SearchHits<SampleEntity> searchHits = searchPage.getSearchHits();
1606+
assertThat(searchHits).isNotNull();
1607+
assertThat((searchHits.getTotalHits())).isEqualTo(20);
1608+
assertThat(searchHits.getSearchHits()).hasSize(10);
1609+
Pageable nextPageable = searchPage.nextPageable();
1610+
assertThat((nextPageable.getPageNumber())).isEqualTo(1);
1611+
}
1612+
15961613
private List<SampleEntity> createSampleEntities(String type, int numberOfEntities) {
15971614

15981615
List<SampleEntity> entities = new ArrayList<>();
15991616
for (int i = 0; i < numberOfEntities; i++) {
1600-
16011617
SampleEntity entity = new SampleEntity();
16021618
entity.setId(UUID.randomUUID().toString());
16031619
entity.setAvailable(true);
@@ -1633,8 +1649,7 @@ void shouldStreamSearchHitsWithQueryAnnotatedMethod() {
16331649

16341650
@Document(indexName = "test-index-sample-repositories-custom-method")
16351651
static class SampleEntity {
1636-
@Nullable
1637-
@Id private String id;
1652+
@Nullable @Id private String id;
16381653
@Nullable @Field(type = Text, store = true, fielddata = true) private String type;
16391654
@Nullable @Field(type = Text, store = true, fielddata = true) private String message;
16401655
@Nullable @Field(type = Keyword) private String keyword;
@@ -1836,6 +1851,9 @@ public interface SampleCustomMethodRepository extends ElasticsearchRepository<Sa
18361851

18371852
SearchPage<SampleEntity> searchByMessage(String message, Pageable pageable);
18381853

1854+
@Query("{\"match\": {\"message\": \"?0\"}}")
1855+
SearchPage<SampleEntity> searchWithQueryByMessage(String message, Pageable pageable);
1856+
18391857
@CountQuery("{\"bool\" : {\"must\" : {\"term\" : {\"type\" : \"?0\"}}}}")
18401858
long countWithQueryByType(String type);
18411859
}

0 commit comments

Comments
 (0)