mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-07-05 10:12:33 +00:00
Add searchAfter interfaces to NativeSearchQueryBuilder.
Original Pull Request #2106 Closes #2105
This commit is contained in:
parent
9c740f14bd
commit
33c4bb23b7
@ -50,6 +50,7 @@ import org.springframework.lang.Nullable;
|
||||
* @author Peter-Josef Meisch
|
||||
* @author Peer Mueller
|
||||
* @author vdisk
|
||||
* @author owen.qq
|
||||
*/
|
||||
public class NativeSearchQueryBuilder {
|
||||
|
||||
@ -80,6 +81,7 @@ public class NativeSearchQueryBuilder {
|
||||
@Nullable private Duration timeout;
|
||||
private final List<RescorerQuery> rescorerQueries = new ArrayList<>();
|
||||
@Nullable private SuggestBuilder suggestBuilder;
|
||||
@Nullable private List<Object> searchAfter;
|
||||
|
||||
public NativeSearchQueryBuilder withQuery(QueryBuilder queryBuilder) {
|
||||
this.queryBuilder = queryBuilder;
|
||||
@ -342,6 +344,15 @@ public class NativeSearchQueryBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public NativeSearchQueryBuilder withSearchAfter(List<Object> searchAfter) {
|
||||
if (searchAfter != null && searchAfter.isEmpty()) {
|
||||
return this;
|
||||
}
|
||||
|
||||
this.searchAfter = searchAfter;
|
||||
return this;
|
||||
}
|
||||
|
||||
public NativeSearchQuery build() {
|
||||
|
||||
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery( //
|
||||
@ -431,6 +442,11 @@ public class NativeSearchQueryBuilder {
|
||||
if (suggestBuilder != null) {
|
||||
nativeSearchQuery.setSuggestBuilder(suggestBuilder);
|
||||
}
|
||||
|
||||
if (searchAfter != null) {
|
||||
nativeSearchQuery.setSearchAfter(searchAfter);
|
||||
}
|
||||
|
||||
return nativeSearchQuery;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
package org.springframework.data.elasticsearch.core.query;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
/**
|
||||
* @author owen.qq
|
||||
*/
|
||||
public class NativeSearchQueryBuilderTests {
|
||||
|
||||
@Test // #2105
|
||||
void shouldContainEffectiveSearchAfterValue() {
|
||||
Long lastSortValue = 1L;
|
||||
List<Object> searchAfter = Lists.newArrayList(lastSortValue);
|
||||
|
||||
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
|
||||
nativeSearchQueryBuilder.withSearchAfter(searchAfter);
|
||||
NativeSearchQuery nativeSearchQuery = nativeSearchQueryBuilder.build();
|
||||
|
||||
assertThat(nativeSearchQuery.getSearchAfter()).isNotNull();
|
||||
}
|
||||
|
||||
@Test // #2105
|
||||
void shouldIgnoreNullableSearchAfterValue() {
|
||||
List<Object> emptySearchValueByFirstSearch = null;
|
||||
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
|
||||
nativeSearchQueryBuilder.withSearchAfter(emptySearchValueByFirstSearch);
|
||||
NativeSearchQuery nativeSearchQuery = nativeSearchQueryBuilder.build();
|
||||
|
||||
assertThat(nativeSearchQuery.getSearchAfter()).isNull();
|
||||
}
|
||||
|
||||
@Test // #2105
|
||||
void shouldIgnoreEmptySearchAfterValue() {
|
||||
List<Object> emptySearchValueByFirstSearch = Lists.newArrayList();
|
||||
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
|
||||
nativeSearchQueryBuilder.withSearchAfter(emptySearchValueByFirstSearch);
|
||||
NativeSearchQuery nativeSearchQuery = nativeSearchQueryBuilder.build();
|
||||
|
||||
assertThat(nativeSearchQuery.getSearchAfter()).isNull();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user