|
@@ -11,11 +11,12 @@ import org.elasticsearch.common.xcontent.ConstructingObjectParser;
|
|
|
import org.elasticsearch.common.xcontent.ToXContent;
|
|
|
import org.elasticsearch.common.xcontent.ToXContentObject;
|
|
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
|
|
-import org.elasticsearch.xpack.core.ml.dataframe.stats.common.MemoryUsage;
|
|
|
import org.elasticsearch.xpack.core.ml.dataframe.stats.classification.ClassificationStats;
|
|
|
+import org.elasticsearch.xpack.core.ml.dataframe.stats.common.MemoryUsage;
|
|
|
import org.elasticsearch.xpack.core.ml.dataframe.stats.outlierdetection.OutlierDetectionStats;
|
|
|
import org.elasticsearch.xpack.core.ml.dataframe.stats.regression.RegressionStats;
|
|
|
import org.elasticsearch.xpack.core.ml.inference.TrainedModelDefinition;
|
|
|
+import org.elasticsearch.xpack.core.ml.utils.PhaseProgress;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.Collections;
|
|
@@ -28,6 +29,7 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
|
|
|
public static final ParseField TYPE = new ParseField("analytics_result");
|
|
|
|
|
|
+ private static final ParseField PHASE_PROGRESS = new ParseField("phase_progress");
|
|
|
private static final ParseField PROGRESS_PERCENT = new ParseField("progress_percent");
|
|
|
private static final ParseField INFERENCE_MODEL = new ParseField("inference_model");
|
|
|
private static final ParseField ANALYTICS_MEMORY_USAGE = new ParseField("analytics_memory_usage");
|
|
@@ -38,16 +40,18 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
public static final ConstructingObjectParser<AnalyticsResult, Void> PARSER = new ConstructingObjectParser<>(TYPE.getPreferredName(),
|
|
|
a -> new AnalyticsResult(
|
|
|
(RowResults) a[0],
|
|
|
- (Integer) a[1],
|
|
|
- (TrainedModelDefinition.Builder) a[2],
|
|
|
- (MemoryUsage) a[3],
|
|
|
- (OutlierDetectionStats) a[4],
|
|
|
- (ClassificationStats) a[5],
|
|
|
- (RegressionStats) a[6]
|
|
|
+ (PhaseProgress) a[1],
|
|
|
+ (Integer) a[2],
|
|
|
+ (TrainedModelDefinition.Builder) a[3],
|
|
|
+ (MemoryUsage) a[4],
|
|
|
+ (OutlierDetectionStats) a[5],
|
|
|
+ (ClassificationStats) a[6],
|
|
|
+ (RegressionStats) a[7]
|
|
|
));
|
|
|
|
|
|
static {
|
|
|
PARSER.declareObject(optionalConstructorArg(), RowResults.PARSER, RowResults.TYPE);
|
|
|
+ PARSER.declareObject(optionalConstructorArg(), PhaseProgress.PARSER, PHASE_PROGRESS);
|
|
|
PARSER.declareInt(optionalConstructorArg(), PROGRESS_PERCENT);
|
|
|
// TODO change back to STRICT_PARSER once native side is aligned
|
|
|
PARSER.declareObject(optionalConstructorArg(), TrainedModelDefinition.LENIENT_PARSER, INFERENCE_MODEL);
|
|
@@ -58,7 +62,11 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
}
|
|
|
|
|
|
private final RowResults rowResults;
|
|
|
+ private final PhaseProgress phaseProgress;
|
|
|
+
|
|
|
+ // TODO remove after process is writing out phase_progress
|
|
|
private final Integer progressPercent;
|
|
|
+
|
|
|
private final TrainedModelDefinition.Builder inferenceModelBuilder;
|
|
|
private final TrainedModelDefinition inferenceModel;
|
|
|
private final MemoryUsage memoryUsage;
|
|
@@ -67,6 +75,7 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
private final RegressionStats regressionStats;
|
|
|
|
|
|
public AnalyticsResult(@Nullable RowResults rowResults,
|
|
|
+ @Nullable PhaseProgress phaseProgress,
|
|
|
@Nullable Integer progressPercent,
|
|
|
@Nullable TrainedModelDefinition.Builder inferenceModelBuilder,
|
|
|
@Nullable MemoryUsage memoryUsage,
|
|
@@ -74,6 +83,7 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
@Nullable ClassificationStats classificationStats,
|
|
|
@Nullable RegressionStats regressionStats) {
|
|
|
this.rowResults = rowResults;
|
|
|
+ this.phaseProgress = phaseProgress;
|
|
|
this.progressPercent = progressPercent;
|
|
|
this.inferenceModelBuilder = inferenceModelBuilder;
|
|
|
this.inferenceModel = inferenceModelBuilder == null ? null : inferenceModelBuilder.build();
|
|
@@ -87,6 +97,10 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
return rowResults;
|
|
|
}
|
|
|
|
|
|
+ public PhaseProgress getPhaseProgress() {
|
|
|
+ return phaseProgress;
|
|
|
+ }
|
|
|
+
|
|
|
public Integer getProgressPercent() {
|
|
|
return progressPercent;
|
|
|
}
|
|
@@ -117,6 +131,9 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
if (rowResults != null) {
|
|
|
builder.field(RowResults.TYPE.getPreferredName(), rowResults);
|
|
|
}
|
|
|
+ if (phaseProgress != null) {
|
|
|
+ builder.field(PHASE_PROGRESS.getPreferredName(), phaseProgress);
|
|
|
+ }
|
|
|
if (progressPercent != null) {
|
|
|
builder.field(PROGRESS_PERCENT.getPreferredName(), progressPercent);
|
|
|
}
|
|
@@ -152,6 +169,7 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
|
|
|
AnalyticsResult that = (AnalyticsResult) other;
|
|
|
return Objects.equals(rowResults, that.rowResults)
|
|
|
+ && Objects.equals(phaseProgress, that.phaseProgress)
|
|
|
&& Objects.equals(progressPercent, that.progressPercent)
|
|
|
&& Objects.equals(inferenceModel, that.inferenceModel)
|
|
|
&& Objects.equals(memoryUsage, that.memoryUsage)
|
|
@@ -162,7 +180,7 @@ public class AnalyticsResult implements ToXContentObject {
|
|
|
|
|
|
@Override
|
|
|
public int hashCode() {
|
|
|
- return Objects.hash(rowResults, progressPercent, inferenceModel, memoryUsage, outlierDetectionStats, classificationStats,
|
|
|
- regressionStats);
|
|
|
+ return Objects.hash(rowResults, phaseProgress, progressPercent, inferenceModel, memoryUsage, outlierDetectionStats,
|
|
|
+ classificationStats, regressionStats);
|
|
|
}
|
|
|
}
|