Skip to content

Commit c66443a

Browse files
authored
DATAES-988 Allow specifying max results in NativeSearchQueryBuilder
Original PR: #561 Add a withMaxResults method to NativeSearchQueryBuilder for specifying the maxResults on the built Query. This is common for aggregation queries where search hits are not needed. Having the builder method for setting maxResults is a minor ergonomic improvement, e.g. NativeSearchQuery searchQuery = NativeSearchQueryBuilder() .withQuery(matchAllQuery()) .addAggregation(terms("examples").field("example")) .withMaxResults(0) .build(); versus what was required before: NativeSearchQuery searchQuery = NativeSearchQueryBuilder() .withQuery(matchAllQuery()) .addAggregation(terms("examples").field("example")) .build(); searchQuery.setMaxResults(0);
1 parent 7912ae9 commit c66443a

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public class NativeSearchQueryBuilder {
6666
@Nullable private SearchType searchType;
6767
@Nullable private IndicesOptions indicesOptions;
6868
@Nullable private String preference;
69+
@Nullable private Integer maxResults;
6970

7071
public NativeSearchQueryBuilder withQuery(QueryBuilder queryBuilder) {
7172
this.queryBuilder = queryBuilder;
@@ -167,6 +168,11 @@ public NativeSearchQueryBuilder withPreference(String preference) {
167168
return this;
168169
}
169170

171+
public NativeSearchQueryBuilder withMaxResults(Integer maxResults) {
172+
this.maxResults = maxResults;
173+
return this;
174+
}
175+
170176
public NativeSearchQuery build() {
171177

172178
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryBuilder, filterBuilder, sortBuilders,
@@ -218,10 +224,15 @@ public NativeSearchQuery build() {
218224
if (indicesOptions != null) {
219225
nativeSearchQuery.setIndicesOptions(indicesOptions);
220226
}
227+
221228
if (preference != null) {
222229
nativeSearchQuery.setPreference(preference);
223230
}
224231

232+
if (maxResults != null) {
233+
nativeSearchQuery.setMaxResults(maxResults);
234+
}
235+
225236
return nativeSearchQuery;
226237
}
227238
}

src/test/java/org/springframework/data/elasticsearch/core/aggregation/ElasticsearchTemplateAggregationTests.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ public void shouldReturnAggregatedResponseForGivenSearchQuery() {
118118
.withQuery(matchAllQuery()) //
119119
.withSearchType(SearchType.DEFAULT) //
120120
.addAggregation(terms("subjects").field("subject")) //
121+
.withMaxResults(0) //
121122
.build();
122123
// when
123124
SearchHits<ArticleEntity> searchHits = operations.search(searchQuery, ArticleEntity.class,
@@ -127,6 +128,7 @@ public void shouldReturnAggregatedResponseForGivenSearchQuery() {
127128
// then
128129
assertThat(aggregations).isNotNull();
129130
assertThat(aggregations.asMap().get("subjects")).isNotNull();
131+
assertThat(searchHits.hasSearchHits()).isFalse();
130132
}
131133

132134
/**

0 commit comments

Comments
 (0)