|
@@ -11,6 +11,7 @@ package org.elasticsearch.search.query;
|
|
|
|
|
|
import org.apache.lucene.search.FieldDoc;
|
|
|
import org.apache.lucene.search.TotalHits;
|
|
|
+import org.elasticsearch.TransportVersion;
|
|
|
import org.elasticsearch.TransportVersions;
|
|
|
import org.elasticsearch.common.io.stream.DelayableWriteable;
|
|
|
import org.elasticsearch.common.io.stream.StreamInput;
|
|
@@ -92,7 +93,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
|
|
|
public QuerySearchResult(StreamInput in, boolean delayedAggregations) throws IOException {
|
|
|
isNull = in.readBoolean();
|
|
|
if (isNull == false) {
|
|
|
- ShardSearchContextId id = in.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)
|
|
|
+ ShardSearchContextId id = versionSupportsBatchedExecution(in.getTransportVersion())
|
|
|
? in.readOptionalWriteable(ShardSearchContextId::new)
|
|
|
: new ShardSearchContextId(in);
|
|
|
readFromWithId(id, in, delayedAggregations);
|
|
@@ -410,7 +411,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
|
|
|
sortValueFormats[i] = in.readNamedWriteable(DocValueFormat.class);
|
|
|
}
|
|
|
}
|
|
|
- if (in.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
|
|
|
+ if (versionSupportsBatchedExecution(in.getTransportVersion())) {
|
|
|
if (in.readBoolean()) {
|
|
|
setTopDocs(readTopDocs(in));
|
|
|
}
|
|
@@ -440,7 +441,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
|
|
|
setRescoreDocIds(new RescoreDocIds(in));
|
|
|
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
|
|
|
rankShardResult = in.readOptionalNamedWriteable(RankShardResult.class);
|
|
|
- if (in.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
|
|
|
+ if (versionSupportsBatchedExecution(in.getTransportVersion())) {
|
|
|
reduced = in.readBoolean();
|
|
|
}
|
|
|
}
|
|
@@ -461,7 +462,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
|
|
|
}
|
|
|
out.writeBoolean(isNull);
|
|
|
if (isNull == false) {
|
|
|
- if (out.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
|
|
|
+ if (versionSupportsBatchedExecution(out.getTransportVersion())) {
|
|
|
out.writeOptionalWriteable(contextId);
|
|
|
} else {
|
|
|
contextId.writeTo(out);
|
|
@@ -481,7 +482,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
|
|
|
out.writeNamedWriteable(sortValueFormats[i]);
|
|
|
}
|
|
|
}
|
|
|
- if (out.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
|
|
|
+ if (versionSupportsBatchedExecution(out.getTransportVersion())) {
|
|
|
if (topDocsAndMaxScore != null) {
|
|
|
out.writeBoolean(true);
|
|
|
writeTopDocs(out, topDocsAndMaxScore);
|
|
@@ -511,7 +512,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
|
|
|
} else if (rankShardResult != null) {
|
|
|
throw new IllegalArgumentException("cannot serialize [rank] to version [" + out.getTransportVersion().toReleaseVersion() + "]");
|
|
|
}
|
|
|
- if (out.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
|
|
|
+ if (versionSupportsBatchedExecution(out.getTransportVersion())) {
|
|
|
out.writeBoolean(reduced);
|
|
|
}
|
|
|
}
|
|
@@ -561,4 +562,9 @@ public final class QuerySearchResult extends SearchPhaseResult {
|
|
|
}
|
|
|
return super.hasReferences();
|
|
|
}
|
|
|
+
|
|
|
+ private static boolean versionSupportsBatchedExecution(TransportVersion transportVersion) {
|
|
|
+ return transportVersion.onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)
|
|
|
+ || transportVersion.isPatchFrom(TransportVersions.BATCHED_QUERY_PHASE_VERSION_BACKPORT_8_X);
|
|
|
+ }
|
|
|
}
|