DATAES-216 - Adding support to 'indices_boost' when searching against multiple indices

Applying spring-data code format

Merge branch 'master' of https://github.com/thiagolocatelli/spring-data-elasticsearch into thiagolocatelli-master
This commit is contained in:
Thiago Locatelli 2015-11-26 11:09:33 -05:00 committed by Mohsin Husen
parent 9c91723833
commit ba1fb9fc6f
5 changed files with 75 additions and 3 deletions

View File

@ -864,6 +864,12 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
} }
} }
if (searchQuery.getIndicesBoost() != null) {
for (IndexBoost indexBoost : searchQuery.getIndicesBoost()) {
searchRequest.addIndexBoost(indexBoost.getIndexName(), indexBoost.getBoost());
}
}
if (CollectionUtils.isNotEmpty(searchQuery.getAggregations())) { if (CollectionUtils.isNotEmpty(searchQuery.getAggregations())) {
for (AbstractAggregationBuilder aggregationBuilder : searchQuery.getAggregations()) { for (AbstractAggregationBuilder aggregationBuilder : searchQuery.getAggregations()) {
searchRequest.addAggregation(aggregationBuilder); searchRequest.addAggregation(aggregationBuilder);

View File

@ -0,0 +1,42 @@
/*
* Copyright 2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.elasticsearch.core.query;
/**
* Defines a IndexBoost to be applied on the "indices_boost" query clause
*
* @author Thiago Locatelli
*/
public class IndexBoost {
private String indexName;
private float boost;
public IndexBoost(String indexName, float boost) {
this.indexName = indexName;
this.boost = boost;
}
public String getIndexName() {
return indexName;
}
public float getBoost() {
return boost;
}
}

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2013 the original author or authors. * Copyright 2013-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -45,6 +45,7 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery {
private List<FacetRequest> facets; private List<FacetRequest> facets;
private List<AbstractAggregationBuilder> aggregations; private List<AbstractAggregationBuilder> aggregations;
private HighlightBuilder.Field[] highlightFields; private HighlightBuilder.Field[] highlightFields;
private IndexBoost[] indicesBoost;
public NativeSearchQuery(QueryBuilder query) { public NativeSearchQuery(QueryBuilder query) {
@ -129,4 +130,14 @@ public class NativeSearchQuery extends AbstractQuery implements SearchQuery {
public void setAggregations(List<AbstractAggregationBuilder> aggregations) { public void setAggregations(List<AbstractAggregationBuilder> aggregations) {
this.aggregations = aggregations; this.aggregations = aggregations;
} }
@Override
public IndexBoost[] getIndicesBoost() {
return indicesBoost;
}
public void setIndicesBoost(IndexBoost... indicesBoost) {
this.indicesBoost = indicesBoost;
}
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2013-2014 the original author or authors. * Copyright 2013-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -50,6 +50,7 @@ public class NativeSearchQueryBuilder {
private String[] indices; private String[] indices;
private String[] types; private String[] types;
private String[] fields; private String[] fields;
private IndexBoost[] indicesBoost;
private float minScore; private float minScore;
private Collection<String> ids; private Collection<String> ids;
private String route; private String route;
@ -90,6 +91,11 @@ public class NativeSearchQueryBuilder {
return this; return this;
} }
public NativeSearchQueryBuilder withIndicesBoost(IndexBoost... indicesBoost) {
this.indicesBoost = indicesBoost;
return this;
}
public NativeSearchQueryBuilder withPageable(Pageable pageable) { public NativeSearchQueryBuilder withPageable(Pageable pageable) {
this.pageable = pageable; this.pageable = pageable;
return this; return this;
@ -147,6 +153,11 @@ public class NativeSearchQueryBuilder {
if (fields != null) { if (fields != null) {
nativeSearchQuery.addFields(fields); nativeSearchQuery.addFields(fields);
} }
if(indicesBoost != null) {
nativeSearchQuery.setIndicesBoost(indicesBoost);
}
if (CollectionUtils.isNotEmpty(scriptFields)) { if (CollectionUtils.isNotEmpty(scriptFields)) {
nativeSearchQuery.setScriptFields(scriptFields); nativeSearchQuery.setScriptFields(scriptFields);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2013 the original author or authors. * Copyright 2013-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -45,6 +45,8 @@ public interface SearchQuery extends Query {
HighlightBuilder.Field[] getHighlightFields(); HighlightBuilder.Field[] getHighlightFields();
IndexBoost[] getIndicesBoost();
List<ScriptField> getScriptFields(); List<ScriptField> getScriptFields();
} }