diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java index 0f42188c2..c7ed0c1e5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java @@ -77,6 +77,7 @@ import org.springframework.util.Assert; * @author Mark Paluch * @author Farid Azaza * @author Martin Choraine + * @author Peter-Josef Meisch * @since 3.2 */ public class ReactiveElasticsearchTemplate implements ReactiveElasticsearchOperations { @@ -264,8 +265,8 @@ public class ReactiveElasticsearchTemplate implements ReactiveElasticsearchOpera searchSourceBuilder.fetchSource(query.getSourceFilter().getIncludes(), query.getSourceFilter().getExcludes()); } - if (query instanceof NativeSearchQuery && ((NativeSearchQuery) query).getCollapseBuilder() != null) { - searchSourceBuilder.collapse(((NativeSearchQuery) query).getCollapseBuilder()); + if (query instanceof SearchQuery && ((SearchQuery) query).getCollapseBuilder() != null) { + searchSourceBuilder.collapse(((SearchQuery) query).getCollapseBuilder()); } sort(query, entity).forEach(searchSourceBuilder::sort); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java index 3f0286122..32e2a3985 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java @@ -16,6 +16,7 @@ package org.springframework.data.elasticsearch.core.query; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.elasticsearch.index.query.QueryBuilder; @@ -25,8 +26,6 @@ import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.search.sort.SortBuilder; import org.springframework.data.elasticsearch.core.facet.FacetRequest; -import java.util.Arrays; - /** * NativeSearchQuery * @@ -50,21 +49,26 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery { private List indicesBoost; public NativeSearchQuery(QueryBuilder query) { + this.query = query; } public NativeSearchQuery(QueryBuilder query, QueryBuilder filter) { + this.query = query; this.filter = filter; } public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List sorts) { + this.query = query; this.filter = filter; this.sorts = sorts; } - public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List sorts, HighlightBuilder.Field[] highlightFields) { + public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List sorts, + HighlightBuilder.Field[] highlightFields) { + this.query = query; this.filter = filter; this.sorts = sorts; @@ -73,6 +77,7 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery { public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List sorts, HighlightBuilder highlighBuilder, HighlightBuilder.Field[] highlightFields) { + this.query = query; this.filter = filter; this.sorts = sorts; @@ -102,16 +107,18 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery { return highlightFields; } - @Override - public List getScriptFields() { return scriptFields; } + @Override + public List getScriptFields() { + return scriptFields; + } - public void setScriptFields(List scriptFields) { - this.scriptFields.addAll(scriptFields); - } + public void setScriptFields(List scriptFields) { + this.scriptFields.addAll(scriptFields); + } - public void addScriptField(ScriptField... scriptField) { - scriptFields.addAll(Arrays.asList(scriptField)); - } + public void addScriptField(ScriptField... scriptField) { + scriptFields.addAll(Arrays.asList(scriptField)); + } @Override public CollapseBuilder getCollapseBuilder() { @@ -123,9 +130,11 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery { } public void addFacet(FacetRequest facetRequest) { + if (facets == null) { facets = new ArrayList<>(); } + facets.add(facetRequest); } @@ -144,9 +153,11 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery { } public void addAggregation(AbstractAggregationBuilder aggregationBuilder) { + if (aggregations == null) { aggregations = new ArrayList<>(); } + aggregations.add(aggregationBuilder); } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java index bef951601..10ff21222 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java @@ -89,7 +89,7 @@ public class NativeSearchQueryBuilder { return this; } - public NativeSearchQueryBuilder withCollapse(String collapseField) { + public NativeSearchQueryBuilder withCollapseField(String collapseField) { this.collapseBuilder = new CollapseBuilder(collapseField); return this; } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java index 87dbb88a5..5a4b7085e 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java @@ -2843,7 +2843,7 @@ public class ElasticsearchTemplateTests { elasticsearchTemplate.refresh(SampleEntity.class); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) - .withIndices(INDEX_NAME_SAMPLE_ENTITY).withTypes(TYPE_NAME).withCollapse("rate").build(); + .withIndices(INDEX_NAME_SAMPLE_ENTITY).withTypes(TYPE_NAME).withCollapseField("rate").build(); // when Page page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateTests.java index a40d3747b..6c35da936 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateTests.java @@ -24,8 +24,6 @@ import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -680,16 +678,16 @@ public class ReactiveElasticsearchTemplateTests { entity3.setRate(1); index(entity1, entity2, entity3); - SearchQuery query = new NativeSearchQueryBuilder() - .withIndices(DEFAULT_INDEX) - .withQuery(matchAllQuery()) - .withCollapse("rate") - .withPageable(PageRequest.of(0, 25)) + SearchQuery query = new NativeSearchQueryBuilder() // + .withIndices(DEFAULT_INDEX) // + .withQuery(matchAllQuery()) // + .withCollapseField("rate") // + .withPageable(PageRequest.of(0, 25)) // .build(); - template.find(query, SampleEntity.class) - .as(StepVerifier::create) - .expectNextCount(2) + template.find(query, SampleEntity.class) // + .as(StepVerifier::create) // + .expectNextCount(2) // .verifyComplete(); }