/* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch licenses this file to you 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.elasticsearch.search; import org.elasticsearch.common.io.stream.Streamable; import org.elasticsearch.search.fetch.FetchSearchResult; import org.elasticsearch.search.query.QuerySearchResult; import org.elasticsearch.transport.TransportResponse; /** * This class is a base class for all search releated results. It contains the shard target it * was executed against, a shard index used to reference the result on the coordinating node * and a request ID that is used to reference the request context on the executing node. The * request ID is particularly important since it is used to reference and maintain a context * across search phases to ensure the same point in time snapshot is used for querying and * fetching etc. */ public abstract class SearchPhaseResult extends TransportResponse implements Streamable { private SearchShardTarget searchShardTarget; private int shardIndex = -1; protected long requestId; /** * Returns the results request ID that is used to reference the search context on the executing * node */ public long getRequestId() { return requestId; } /** * Returns the shard index in the context of the currently executing search request that is * used for accounting on the coordinating node */ public int getShardIndex() { assert shardIndex != -1 : "shardIndex is not set"; return shardIndex; } public SearchShardTarget getSearchShardTarget() { return searchShardTarget; } public void setSearchShardTarget(SearchShardTarget shardTarget) { this.searchShardTarget = shardTarget; } public void setShardIndex(int shardIndex) { assert shardIndex >= 0 : "shardIndex must be >= 0 but was: " + shardIndex; this.shardIndex = shardIndex; } /** * Returns the query result iff it's included in this response otherwise <code>null</code> */ public QuerySearchResult queryResult() { return null; } /** * Returns the fetch result iff it's included in this response otherwise <code>null</code> */ public FetchSearchResult fetchResult() { return null; } }