diff options
Diffstat (limited to 'core/src/main/java/org/elasticsearch/action/search/AbstractSearchAsyncAction.java')
-rw-r--r-- | core/src/main/java/org/elasticsearch/action/search/AbstractSearchAsyncAction.java | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/core/src/main/java/org/elasticsearch/action/search/AbstractSearchAsyncAction.java b/core/src/main/java/org/elasticsearch/action/search/AbstractSearchAsyncAction.java index c634381d85..2479ff8675 100644 --- a/core/src/main/java/org/elasticsearch/action/search/AbstractSearchAsyncAction.java +++ b/core/src/main/java/org/elasticsearch/action/search/AbstractSearchAsyncAction.java @@ -50,6 +50,7 @@ import java.util.function.Function; abstract class AbstractSearchAsyncAction<FirstResult extends SearchPhaseResult> extends AbstractAsyncAction { + private static final float DEFAULT_INDEX_BOOST = 1.0f; protected final Logger logger; protected final SearchTransportService searchTransportService; @@ -66,6 +67,7 @@ abstract class AbstractSearchAsyncAction<FirstResult extends SearchPhaseResult> private final AtomicInteger totalOps = new AtomicInteger(); protected final AtomicArray<FirstResult> firstResults; private final Map<String, AliasFilter> aliasFilter; + private final Map<String, Float> concreteIndexBoosts; private final long clusterStateVersion; private volatile AtomicArray<ShardSearchFailure> shardFailures; private final Object shardFailuresMutex = new Object(); @@ -73,9 +75,9 @@ abstract class AbstractSearchAsyncAction<FirstResult extends SearchPhaseResult> protected AbstractSearchAsyncAction(Logger logger, SearchTransportService searchTransportService, Function<String, DiscoveryNode> nodeIdToDiscoveryNode, - Map<String, AliasFilter> aliasFilter, Executor executor, SearchRequest request, - ActionListener<SearchResponse> listener, GroupShardsIterator shardsIts, long startTime, - long clusterStateVersion, SearchTask task) { + Map<String, AliasFilter> aliasFilter, Map<String, Float> concreteIndexBoosts, + Executor executor, SearchRequest request, ActionListener<SearchResponse> listener, + GroupShardsIterator shardsIts, long startTime, long clusterStateVersion, SearchTask task) { super(startTime); this.logger = logger; this.searchTransportService = searchTransportService; @@ -91,6 +93,7 @@ abstract class AbstractSearchAsyncAction<FirstResult extends SearchPhaseResult> expectedTotalOps = shardsIts.totalSizeWith1ForEmpty(); firstResults = new AtomicArray<>(shardsIts.size()); this.aliasFilter = aliasFilter; + this.concreteIndexBoosts = concreteIndexBoosts; } public void start() { @@ -125,8 +128,10 @@ abstract class AbstractSearchAsyncAction<FirstResult extends SearchPhaseResult> } else { AliasFilter filter = this.aliasFilter.get(shard.index().getUUID()); assert filter != null; + + float indexBoost = concreteIndexBoosts.getOrDefault(shard.index().getUUID(), DEFAULT_INDEX_BOOST); ShardSearchTransportRequest transportRequest = new ShardSearchTransportRequest(request, shardIt.shardId(), shardsIts.size(), - filter, startTime()); + filter, indexBoost, startTime()); sendExecuteFirstPhase(node, transportRequest , new ActionListener<FirstResult>() { @Override public void onResponse(FirstResult result) { |