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 Peter-Josef Meisch
|
||||||
* @author Peer Mueller
|
* @author Peer Mueller
|
||||||
* @author vdisk
|
* @author vdisk
|
||||||
|
* @author owen.qq
|
||||||
*/
|
*/
|
||||||
public class NativeSearchQueryBuilder {
|
public class NativeSearchQueryBuilder {
|
||||||
|
|
||||||
@ -80,6 +81,7 @@ public class NativeSearchQueryBuilder {
|
|||||||
@Nullable private Duration timeout;
|
@Nullable private Duration timeout;
|
||||||
private final List<RescorerQuery> rescorerQueries = new ArrayList<>();
|
private final List<RescorerQuery> rescorerQueries = new ArrayList<>();
|
||||||
@Nullable private SuggestBuilder suggestBuilder;
|
@Nullable private SuggestBuilder suggestBuilder;
|
||||||
|
@Nullable private List<Object> searchAfter;
|
||||||
|
|
||||||
public NativeSearchQueryBuilder withQuery(QueryBuilder queryBuilder) {
|
public NativeSearchQueryBuilder withQuery(QueryBuilder queryBuilder) {
|
||||||
this.queryBuilder = queryBuilder;
|
this.queryBuilder = queryBuilder;
|
||||||
@ -342,6 +344,15 @@ public class NativeSearchQueryBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NativeSearchQueryBuilder withSearchAfter(List<Object> searchAfter) {
|
||||||
|
if (searchAfter != null && searchAfter.isEmpty()) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.searchAfter = searchAfter;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public NativeSearchQuery build() {
|
public NativeSearchQuery build() {
|
||||||
|
|
||||||
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery( //
|
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery( //
|
||||||
@ -431,6 +442,11 @@ public class NativeSearchQueryBuilder {
|
|||||||
if (suggestBuilder != null) {
|
if (suggestBuilder != null) {
|
||||||
nativeSearchQuery.setSuggestBuilder(suggestBuilder);
|
nativeSearchQuery.setSuggestBuilder(suggestBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (searchAfter != null) {
|
||||||
|
nativeSearchQuery.setSearchAfter(searchAfter);
|
||||||
|
}
|
||||||
|
|
||||||
return nativeSearchQuery;
|
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