Skip to content

Commit 93ea5bc

Browse files
committed
Copy metrics and default_metric properties when downsampling aggregate_metric_double
1 parent 0eabf4a commit 93ea5bc

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamFeatures.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,17 @@ public class DataStreamFeatures implements FeatureSpecification {
2121

2222
public static final NodeFeature DATA_STREAM_FAILURE_STORE_TSDB_FIX = new NodeFeature("data_stream.failure_store.tsdb_fix");
2323

24+
public static final NodeFeature DOWNSAMPLE_AGGREGATE_DEFAULT_METRIC_FIX = new NodeFeature(
25+
"data_stream.downsample.default_aggregate_metric_fix"
26+
);
27+
2428
@Override
2529
public Set<NodeFeature> getFeatures() {
2630
return Set.of();
2731
}
2832

2933
@Override
3034
public Set<NodeFeature> getTestFeatures() {
31-
return Set.of(DATA_STREAM_FAILURE_STORE_TSDB_FIX);
35+
return Set.of(DATA_STREAM_FAILURE_STORE_TSDB_FIX, DOWNSAMPLE_AGGREGATE_DEFAULT_METRIC_FIX);
3236
}
3337
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
"Downsample index":
1+
"downsample aggregate field":
22
- requires:
3-
cluster_features: ["gte_v8.13.0"]
4-
reason: _tsid hashing introduced in 8.13
3+
cluster_features: ["data_stream.downsample.default_aggregate_metric_fix"]
4+
reason: "#119696 fixed"
55

66
- do:
77
indices.create:

x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
import java.util.ArrayList;
9292
import java.util.List;
9393
import java.util.Map;
94+
import java.util.Objects;
9495
import java.util.Set;
9596
import java.util.concurrent.atomic.AtomicBoolean;
9697
import java.util.concurrent.atomic.AtomicInteger;
@@ -752,9 +753,22 @@ private static void addMetricFieldMapping(final XContentBuilder builder, final S
752753
builder.field(fieldProperty, fieldProperties.get(fieldProperty));
753754
}
754755
} else {
755-
final String[] supportedAggsArray = metricType.supportedAggs();
756+
List<String> supportedAggs = List.of(metricType.supportedAggs());
756757
// We choose max as the default metric
757-
final String defaultMetric = List.of(supportedAggsArray).contains("max") ? "max" : supportedAggsArray[0];
758+
String defaultMetric = supportedAggs.contains("max") ? "max" : supportedAggs.get(0);
759+
760+
if (fieldProperties.get("type").equals(AggregateDoubleMetricFieldMapper.CONTENT_TYPE)) {
761+
@SuppressWarnings("unchecked")
762+
List<String> currentAggs = (List<String>) fieldProperties.get(AggregateDoubleMetricFieldMapper.Names.METRICS);
763+
supportedAggs = supportedAggs.stream().filter(currentAggs::contains).toList();
764+
defaultMetric = Objects.requireNonNullElse(
765+
(String) fieldProperties.get(AggregateDoubleMetricFieldMapper.Names.DEFAULT_METRIC),
766+
defaultMetric
767+
);
768+
}
769+
770+
String[] supportedAggsArray = supportedAggs.toArray(String[]::new);
771+
758772
builder.field("type", AggregateDoubleMetricFieldMapper.CONTENT_TYPE)
759773
.array(AggregateDoubleMetricFieldMapper.Names.METRICS, supportedAggsArray)
760774
.field(AggregateDoubleMetricFieldMapper.Names.DEFAULT_METRIC, defaultMetric)

0 commit comments

Comments
 (0)