in ml-algorithms/src/main/java/org/opensearch/ml/engine/algorithms/anomalylocalization/AnomalyLocalizationInput.java [55:127]
public static AnomalyLocalizationInput parse(XContentParser parser) throws IOException {
ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.currentToken(), parser);
String indexName = null;
List<String> attributeFieldNames = new ArrayList<>();
List<AggregationBuilder> aggregations = new ArrayList<>();
String timeFieldName = null;
long startTime = 0;
long endTime = 0;
long minTimeInterval = 0;
int numOutputs = 0;
Optional<Long> anomalyStartTime = Optional.empty();
Optional<QueryBuilder> filterQuery = Optional.empty();
while (parser.nextToken() != XContentParser.Token.END_OBJECT) {
switch (parser.currentName()) {
case FIELD_INDEX_NAME:
parser.nextToken();
indexName = parser.text();
break;
case FIELD_ATTTRIBUTE_FIELD_NAMES:
ensureExpectedToken(XContentParser.Token.START_ARRAY, parser.nextToken(), parser);
while (parser.nextToken() != XContentParser.Token.END_ARRAY) {
attributeFieldNames.add(parser.text());
}
ensureExpectedToken(XContentParser.Token.END_ARRAY, parser.currentToken(), parser);
break;
case FIELD_AGGREGATIONS:
ensureExpectedToken(XContentParser.Token.START_ARRAY, parser.nextToken(), parser);
while (parser.nextToken() != XContentParser.Token.END_ARRAY) {
ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.currentToken(), parser);
aggregations.addAll(AggregatorFactories.parseAggregators(parser).getAggregatorFactories());
ensureExpectedToken(XContentParser.Token.END_OBJECT, parser.currentToken(), parser);
}
ensureExpectedToken(XContentParser.Token.END_ARRAY, parser.currentToken(), parser);
break;
case FIELD_TIME_FIELD_NAME:
parser.nextToken();
timeFieldName = parser.text();
break;
case FIELD_START_TIME:
parser.nextToken();
startTime = parser.longValue();
break;
case FIELD_END_TIME:
parser.nextToken();
endTime = parser.longValue();
break;
case FIELD_MIN_TIME_INTERVAL:
parser.nextToken();
minTimeInterval = parser.longValue();
break;
case FIELD_NUM_OUTPUTS:
parser.nextToken();
numOutputs = parser.intValue();
break;
case FIELD_ANOMALY_START_TIME:
parser.nextToken();
anomalyStartTime = Optional.of(parser.longValue());
break;
case FIELD_FILTER_QUERY:
ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.nextToken(), parser);
filterQuery = Optional.of(parseInnerQueryBuilder(parser));
ensureExpectedToken(XContentParser.Token.END_OBJECT, parser.currentToken(), parser);
break;
default:
parser.skipChildren();
break;
}
}
return new AnomalyLocalizationInput(indexName, attributeFieldNames, aggregations, timeFieldName, startTime, endTime,
minTimeInterval, numOutputs,
anomalyStartTime, filterQuery);
}