Skip to content

Commit 3c66713

Browse files
committed
[Rollup] Move getMetadata() methods out of rollup config objects
1 parent faa42de commit 3c66713

File tree

4 files changed

+70
-9
lines changed

4 files changed

+70
-9
lines changed

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/rollup/job/DateHistogramGroupConfig.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,10 +211,6 @@ public Map<String, Object> toAggCap() {
211211
return map;
212212
}
213213

214-
public Map<String, Object> getMetadata() {
215-
return Collections.singletonMap(RollupField.formatMetaField(RollupField.INTERVAL), interval.toString());
216-
}
217-
218214
public void validateMappings(Map<String, Map<String, FieldCapabilities>> fieldCapsResponse,
219215
ActionRequestValidationException validationException) {
220216

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/rollup/job/HistogramGroupConfig.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.List;
2929
import java.util.Map;
3030
import java.util.Objects;
31+
import java.util.Set;
3132
import java.util.stream.Collectors;
3233

3334
import static org.elasticsearch.common.xcontent.ConstructingObjectParser.constructorArg;
@@ -115,8 +116,8 @@ public Map<String, Object> toAggCap() {
115116
return map;
116117
}
117118

118-
public Map<String, Object> getMetadata() {
119-
return Collections.singletonMap(RollupField.formatMetaField(RollupField.INTERVAL), interval);
119+
public Set<String> getAllFields() {
120+
return Arrays.stream(fields).collect(Collectors.toSet());
120121
}
121122

122123
public void validateMappings(Map<String, Map<String, FieldCapabilities>> fieldCapsResponse,

x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/job/RollupIndexer.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.elasticsearch.xpack.core.rollup.RollupField;
2424
import org.elasticsearch.xpack.core.rollup.job.DateHistogramGroupConfig;
2525
import org.elasticsearch.xpack.core.rollup.job.GroupConfig;
26+
import org.elasticsearch.xpack.core.rollup.job.HistogramGroupConfig;
2627
import org.elasticsearch.xpack.core.rollup.job.IndexerState;
2728
import org.elasticsearch.xpack.core.rollup.job.RollupJob;
2829
import org.elasticsearch.xpack.core.rollup.job.RollupJobConfig;
@@ -392,15 +393,12 @@ private SearchRequest buildSearchRequest() {
392393
private CompositeAggregationBuilder createCompositeBuilder(RollupJobConfig config) {
393394
final GroupConfig groupConfig = config.getGroupConfig();
394395
List<CompositeValuesSourceBuilder<?>> builders = new ArrayList<>();
395-
Map<String, Object> metadata = new HashMap<>();
396396

397397
// Add all the agg builders to our request in order: date_histo -> histo -> terms
398398
if (groupConfig != null) {
399399
builders.addAll(groupConfig.getDateHistogram().toBuilders());
400-
metadata.putAll(groupConfig.getDateHistogram().getMetadata());
401400
if (groupConfig.getHistogram() != null) {
402401
builders.addAll(groupConfig.getHistogram().toBuilders());
403-
metadata.putAll(groupConfig.getHistogram().getMetadata());
404402
}
405403
if (groupConfig.getTerms() != null) {
406404
builders.addAll(groupConfig.getTerms().toBuilders());
@@ -409,6 +407,8 @@ private CompositeAggregationBuilder createCompositeBuilder(RollupJobConfig confi
409407

410408
CompositeAggregationBuilder composite = new CompositeAggregationBuilder(AGGREGATION_NAME, builders);
411409
config.getMetricsConfig().forEach(m -> m.toBuilders().forEach(composite::subAggregation));
410+
411+
final Map<String, Object> metadata = createMetadata(groupConfig);
412412
if (metadata.isEmpty() == false) {
413413
composite.setMetaData(metadata);
414414
}
@@ -441,5 +441,20 @@ private QueryBuilder createBoundaryQuery(Map<String, Object> position) {
441441
.format("epoch_millis");
442442
return query;
443443
}
444+
445+
static Map<String, Object> createMetadata(final GroupConfig groupConfig) {
446+
final Map<String, Object> metadata = new HashMap<>();
447+
if (groupConfig != null) {
448+
// Add all the metadata in order: date_histo -> histo
449+
final DateHistogramGroupConfig dateHistogram = groupConfig.getDateHistogram();
450+
metadata.put(RollupField.formatMetaField(RollupField.INTERVAL), dateHistogram.getInterval().toString());
451+
452+
final HistogramGroupConfig histogram = groupConfig.getHistogram();
453+
if (histogram != null) {
454+
metadata.put(RollupField.formatMetaField(RollupField.INTERVAL), histogram.getInterval());
455+
}
456+
}
457+
return metadata;
458+
}
444459
}
445460

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
package org.elasticsearch.xpack.rollup.job;
7+
8+
import org.elasticsearch.test.ESTestCase;
9+
import org.elasticsearch.xpack.core.rollup.ConfigTestHelpers;
10+
import org.elasticsearch.xpack.core.rollup.job.DateHistogramGroupConfig;
11+
import org.elasticsearch.xpack.core.rollup.job.GroupConfig;
12+
import org.elasticsearch.xpack.core.rollup.job.HistogramGroupConfig;
13+
14+
import java.util.Map;
15+
16+
import static org.hamcrest.Matchers.equalTo;
17+
18+
public class RollupIndexerTests extends ESTestCase {
19+
20+
public void testCreateMetadataNoGroupConfig() {
21+
final Map<String, Object> metadata = RollupIndexer.createMetadata(null);
22+
assertNotNull(metadata);
23+
assertTrue(metadata.isEmpty());
24+
}
25+
26+
public void testCreateMetadataWithDateHistogramGroupConfigOnly() {
27+
final DateHistogramGroupConfig dateHistogram = ConfigTestHelpers.randomDateHistogramGroupConfig(random());
28+
final GroupConfig groupConfig = new GroupConfig(dateHistogram);
29+
30+
final Map<String, Object> metadata = RollupIndexer.createMetadata(groupConfig);
31+
assertEquals(1, metadata.size());
32+
assertTrue(metadata.containsKey("_rollup.interval"));
33+
Object value = metadata.get("_rollup.interval");
34+
assertThat(value, equalTo(dateHistogram.getInterval().toString()));
35+
}
36+
37+
public void testCreateMetadata() {
38+
final DateHistogramGroupConfig dateHistogram = ConfigTestHelpers.randomDateHistogramGroupConfig(random());
39+
final HistogramGroupConfig histogram = ConfigTestHelpers.randomHistogramGroupConfig(random());
40+
final GroupConfig groupConfig = new GroupConfig(dateHistogram, histogram, null);
41+
42+
final Map<String, Object> metadata = RollupIndexer.createMetadata(groupConfig);
43+
assertEquals(1, metadata.size());
44+
assertTrue(metadata.containsKey("_rollup.interval"));
45+
Object value = metadata.get("_rollup.interval");
46+
assertThat(value, equalTo(histogram.getInterval()));
47+
}
48+
}
49+

0 commit comments

Comments
 (0)