DATAES-593 - Polishing.

This commit is contained in:
P.J.Meisch 2019-06-24 20:37:57 +02:00
parent 6567d17f23
commit 57ba74e543
5 changed files with 35 additions and 25 deletions

View File

@ -77,6 +77,7 @@ import org.springframework.util.Assert;
* @author Mark Paluch * @author Mark Paluch
* @author Farid Azaza * @author Farid Azaza
* @author Martin Choraine * @author Martin Choraine
* @author Peter-Josef Meisch
* @since 3.2 * @since 3.2
*/ */
public class ReactiveElasticsearchTemplate implements ReactiveElasticsearchOperations { public class ReactiveElasticsearchTemplate implements ReactiveElasticsearchOperations {
@ -264,8 +265,8 @@ public class ReactiveElasticsearchTemplate implements ReactiveElasticsearchOpera
searchSourceBuilder.fetchSource(query.getSourceFilter().getIncludes(), query.getSourceFilter().getExcludes()); searchSourceBuilder.fetchSource(query.getSourceFilter().getIncludes(), query.getSourceFilter().getExcludes());
} }
if (query instanceof NativeSearchQuery && ((NativeSearchQuery) query).getCollapseBuilder() != null) { if (query instanceof SearchQuery && ((SearchQuery) query).getCollapseBuilder() != null) {
searchSourceBuilder.collapse(((NativeSearchQuery) query).getCollapseBuilder()); searchSourceBuilder.collapse(((SearchQuery) query).getCollapseBuilder());
} }
sort(query, entity).forEach(searchSourceBuilder::sort); sort(query, entity).forEach(searchSourceBuilder::sort);

View File

@ -16,6 +16,7 @@
package org.springframework.data.elasticsearch.core.query; package org.springframework.data.elasticsearch.core.query;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.elasticsearch.index.query.QueryBuilder; 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.elasticsearch.search.sort.SortBuilder;
import org.springframework.data.elasticsearch.core.facet.FacetRequest; import org.springframework.data.elasticsearch.core.facet.FacetRequest;
import java.util.Arrays;
/** /**
* NativeSearchQuery * NativeSearchQuery
* *
@ -50,21 +49,26 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery {
private List<IndexBoost> indicesBoost; private List<IndexBoost> indicesBoost;
public NativeSearchQuery(QueryBuilder query) { public NativeSearchQuery(QueryBuilder query) {
this.query = query; this.query = query;
} }
public NativeSearchQuery(QueryBuilder query, QueryBuilder filter) { public NativeSearchQuery(QueryBuilder query, QueryBuilder filter) {
this.query = query; this.query = query;
this.filter = filter; this.filter = filter;
} }
public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List<SortBuilder> sorts) { public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List<SortBuilder> sorts) {
this.query = query; this.query = query;
this.filter = filter; this.filter = filter;
this.sorts = sorts; this.sorts = sorts;
} }
public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List<SortBuilder> sorts, HighlightBuilder.Field[] highlightFields) { public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List<SortBuilder> sorts,
HighlightBuilder.Field[] highlightFields) {
this.query = query; this.query = query;
this.filter = filter; this.filter = filter;
this.sorts = sorts; this.sorts = sorts;
@ -73,6 +77,7 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery {
public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List<SortBuilder> sorts, public NativeSearchQuery(QueryBuilder query, QueryBuilder filter, List<SortBuilder> sorts,
HighlightBuilder highlighBuilder, HighlightBuilder.Field[] highlightFields) { HighlightBuilder highlighBuilder, HighlightBuilder.Field[] highlightFields) {
this.query = query; this.query = query;
this.filter = filter; this.filter = filter;
this.sorts = sorts; this.sorts = sorts;
@ -103,7 +108,9 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery {
} }
@Override @Override
public List<ScriptField> getScriptFields() { return scriptFields; } public List<ScriptField> getScriptFields() {
return scriptFields;
}
public void setScriptFields(List<ScriptField> scriptFields) { public void setScriptFields(List<ScriptField> scriptFields) {
this.scriptFields.addAll(scriptFields); this.scriptFields.addAll(scriptFields);
@ -123,9 +130,11 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery {
} }
public void addFacet(FacetRequest facetRequest) { public void addFacet(FacetRequest facetRequest) {
if (facets == null) { if (facets == null) {
facets = new ArrayList<>(); facets = new ArrayList<>();
} }
facets.add(facetRequest); facets.add(facetRequest);
} }
@ -144,9 +153,11 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery {
} }
public void addAggregation(AbstractAggregationBuilder aggregationBuilder) { public void addAggregation(AbstractAggregationBuilder aggregationBuilder) {
if (aggregations == null) { if (aggregations == null) {
aggregations = new ArrayList<>(); aggregations = new ArrayList<>();
} }
aggregations.add(aggregationBuilder); aggregations.add(aggregationBuilder);
} }

View File

@ -89,7 +89,7 @@ public class NativeSearchQueryBuilder {
return this; return this;
} }
public NativeSearchQueryBuilder withCollapse(String collapseField) { public NativeSearchQueryBuilder withCollapseField(String collapseField) {
this.collapseBuilder = new CollapseBuilder(collapseField); this.collapseBuilder = new CollapseBuilder(collapseField);
return this; return this;
} }

View File

@ -2843,7 +2843,7 @@ public class ElasticsearchTemplateTests {
elasticsearchTemplate.refresh(SampleEntity.class); elasticsearchTemplate.refresh(SampleEntity.class);
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) 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 // when
Page<SampleEntity> page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); Page<SampleEntity> page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);

View File

@ -24,8 +24,6 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.test.StepVerifier; import reactor.test.StepVerifier;
@ -680,16 +678,16 @@ public class ReactiveElasticsearchTemplateTests {
entity3.setRate(1); entity3.setRate(1);
index(entity1, entity2, entity3); index(entity1, entity2, entity3);
SearchQuery query = new NativeSearchQueryBuilder() SearchQuery query = new NativeSearchQueryBuilder() //
.withIndices(DEFAULT_INDEX) .withIndices(DEFAULT_INDEX) //
.withQuery(matchAllQuery()) .withQuery(matchAllQuery()) //
.withCollapse("rate") .withCollapseField("rate") //
.withPageable(PageRequest.of(0, 25)) .withPageable(PageRequest.of(0, 25)) //
.build(); .build();
template.find(query, SampleEntity.class) template.find(query, SampleEntity.class) //
.as(StepVerifier::create) .as(StepVerifier::create) //
.expectNextCount(2) .expectNextCount(2) //
.verifyComplete(); .verifyComplete();
} }