Skip to content

Commit ad6caf0

Browse files
authored
Refactoring/agg types 2 (#24437)
* Removing storage-specyfic method from AggTypes * Simplified bucket handlers * AggTypes class not duplicated anymore in storage modules * Get rid of agg-types record methods in bucket handlers * Better name for AggTypes * Series handlers simplified * Ranaming * Removed record method from series handler * Pivot context init moved to a single place * Missing license header * Init of pivot context replaced with init on access, renaming
1 parent 3142063 commit ad6caf0

File tree

52 files changed

+79
-236
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+79
-236
lines changed

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/AggTypes.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/ESPivot.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.google.common.collect.ImmutableList;
2020
import io.opentelemetry.instrumentation.annotations.WithSpan;
21+
import jakarta.inject.Inject;
2122
import org.graylog.plugins.views.search.Query;
2223
import org.graylog.plugins.views.search.SearchJob;
2324
import org.graylog.plugins.views.search.SearchType;
@@ -42,8 +43,6 @@
4243
import org.slf4j.Logger;
4344
import org.slf4j.LoggerFactory;
4445

45-
import jakarta.inject.Inject;
46-
4746
import java.util.ArrayDeque;
4847
import java.util.ArrayList;
4948
import java.util.List;
@@ -72,10 +71,6 @@ public void doGenerateQueryPart(Query query, Pivot pivot, ESGeneratedQueryContex
7271
LOG.debug("Generating aggregation for {}", pivot);
7372
final SearchSourceBuilder searchSourceBuilder = queryContext.searchSourceBuilder(pivot);
7473

75-
final Map<Object, Object> contextMap = queryContext.contextMap();
76-
final AggTypes aggTypes = new AggTypes();
77-
contextMap.put(pivot.id(), aggTypes);
78-
7974
var generateRollups = pivot.rollup() || (pivot.rowGroups().isEmpty() && pivot.columnGroups().isEmpty());
8075

8176
// add global rollup series if those were requested

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/ESPivotBucketSpecHandler.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@
2121
import org.graylog.plugins.views.search.searchtypes.pivot.BucketSpecHandler;
2222
import org.graylog.plugins.views.search.searchtypes.pivot.Pivot;
2323
import org.graylog.plugins.views.search.searchtypes.pivot.PivotSort;
24-
import org.graylog.plugins.views.search.searchtypes.pivot.PivotSpec;
2524
import org.graylog.plugins.views.search.searchtypes.pivot.SeriesSort;
2625
import org.graylog.plugins.views.search.searchtypes.pivot.SeriesSpec;
2726
import org.graylog.plugins.views.search.searchtypes.pivot.SortSpec;
28-
import org.graylog.shaded.elasticsearch7.org.elasticsearch.search.aggregations.Aggregation;
2927
import org.graylog.shaded.elasticsearch7.org.elasticsearch.search.aggregations.AggregationBuilder;
3028
import org.graylog.shaded.elasticsearch7.org.elasticsearch.search.aggregations.AggregationBuilders;
3129
import org.graylog.shaded.elasticsearch7.org.elasticsearch.search.aggregations.BucketOrder;
@@ -41,14 +39,6 @@
4139
public abstract class ESPivotBucketSpecHandler<SPEC_TYPE extends BucketSpec>
4240
implements BucketSpecHandler<SPEC_TYPE, AggregationBuilder, ESGeneratedQueryContext> {
4341

44-
protected AggTypes aggTypes(ESGeneratedQueryContext queryContext, Pivot pivot) {
45-
return (AggTypes) queryContext.contextMap().get(pivot.id());
46-
}
47-
48-
protected void record(ESGeneratedQueryContext queryContext, Pivot pivot, PivotSpec spec, String name, Class<? extends Aggregation> aggregationClass) {
49-
aggTypes(queryContext, pivot).record(spec, name);
50-
}
51-
5242
public record SortOrders(List<BucketOrder> orders, List<AggregationBuilder> sortingAggregations) {}
5343

5444
protected SortOrders orderListForPivot(Pivot pivot, ESGeneratedQueryContext esGeneratedQueryContext, BucketOrder defaultOrder, Query query) {

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/ESPivotSeriesSpecHandler.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,9 @@
3333
public abstract class ESPivotSeriesSpecHandler<SPEC_TYPE extends SeriesSpec, AGGREGATION_RESULT extends Aggregation>
3434
implements SeriesSpecHandler<SPEC_TYPE, SeriesAggregationBuilder, SearchResponse, AGGREGATION_RESULT, ESSearchTypeHandler<Pivot>, ESGeneratedQueryContext> {
3535

36-
protected AggTypes aggTypes(ESGeneratedQueryContext queryContext, Pivot pivot) {
37-
return (AggTypes) queryContext.contextMap().get(pivot.id());
38-
}
39-
40-
protected void record(ESGeneratedQueryContext queryContext, Pivot pivot, PivotSpec spec, String name, Class<? extends Aggregation> aggregationClass) {
41-
aggTypes(queryContext, pivot).record(spec, name);
42-
}
43-
44-
public Aggregation extractAggregationFromResult(Pivot pivot, PivotSpec spec, HasAggregations aggregations, ESGeneratedQueryContext queryContext) {
45-
return aggTypes(queryContext, pivot).getSubAggregation(spec, aggregations);
36+
public Aggregation extractAggregationFromResult(Pivot pivot, PivotSpec spec, HasAggregations currentAggregationOrBucket, ESGeneratedQueryContext queryContext) {
37+
final String aggName = queryContext.getAggNameForPivotSpecFromContext(pivot, spec);
38+
return currentAggregationOrBucket.getAggregations().get(aggName);
4639
}
4740

4841
@SuppressWarnings("unchecked")

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/buckets/ESDateRangeHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public CreatedAggregations<AggregationBuilder> doCreateAggregation(Direction dir
5757
builder.format("date_time");
5858
builder.keyed(false);
5959

60-
record(queryContext, pivot, dateRangeBucket, name, ParsedDateRange.class);
60+
queryContext.recordNameForPivotSpec(pivot, dateRangeBucket, name);
6161

6262
if (root == null && leaf == null) {
6363
root = builder;

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/series/ESAverageHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class ESAverageHandler extends ESPivotSeriesSpecHandler<Average, Avg> {
3636
@Override
3737
public List<SeriesAggregationBuilder> doCreateAggregation(String name, Pivot pivot, Average avgSpec, ESSearchTypeHandler<Pivot> searchTypeHandler, ESGeneratedQueryContext queryContext) {
3838
final AvgAggregationBuilder avg = AggregationBuilders.avg(name).field(avgSpec.field());
39-
record(queryContext, pivot, avgSpec, name, Avg.class);
39+
queryContext.recordNameForPivotSpec(pivot, avgSpec, name);
4040
return List.of(SeriesAggregationBuilder.metric(avg));
4141
}
4242

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/series/ESCardinalityHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class ESCardinalityHandler extends ESPivotSeriesSpecHandler<Cardinality,
3535
@Override
3636
public List<SeriesAggregationBuilder> doCreateAggregation(String name, Pivot pivot, Cardinality cardinalitySpec, ESSearchTypeHandler<Pivot> searchTypeHandler, ESGeneratedQueryContext queryContext) {
3737
final CardinalityAggregationBuilder card = AggregationBuilders.cardinality(name).field(cardinalitySpec.field());
38-
record(queryContext, pivot, cardinalitySpec, name, org.graylog.shaded.elasticsearch7.org.elasticsearch.search.aggregations.metrics.Cardinality.class);
38+
queryContext.recordNameForPivotSpec(pivot, cardinalitySpec, name);
3939
return List.of(SeriesAggregationBuilder.metric(card));
4040
}
4141

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/series/ESCountHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public List<SeriesAggregationBuilder> doCreateAggregation(String name, Pivot piv
5252
.map(field -> {
5353
// the request was for a field count, we have to add a value_count sub aggregation
5454
final ValueCountAggregationBuilder value = AggregationBuilders.count(name).field(field);
55-
record(queryContext, pivot, count, name, ValueCount.class);
55+
queryContext.recordNameForPivotSpec(pivot, count, name);
5656
return List.of(SeriesAggregationBuilder.metric(value));
5757
})
5858
// doc_count is always present in elasticsearch's bucket aggregations, no need to add it
@@ -82,7 +82,7 @@ public Stream<Value> doHandleResult(Pivot pivot,
8282

8383
@Override
8484
public Aggregation extractAggregationFromResult(Pivot pivot, PivotSpec spec, HasAggregations aggregations, ESGeneratedQueryContext queryContext) {
85-
final String agg = aggTypes(queryContext, pivot).getTypes(spec);
85+
final String agg = queryContext.getAggNameForPivotSpecFromContext(pivot, spec);
8686
if (agg == null) {
8787
if (aggregations instanceof MultiBucketsAggregation.Bucket) {
8888
return createValueCount(((MultiBucketsAggregation.Bucket) aggregations).getDocCount());

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/series/ESLatestHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public List<SeriesAggregationBuilder> doCreateAggregation(String name, Pivot piv
4949
.size(1)
5050
.fetchSource(latestSpec.field(), null)
5151
.sort(SortBuilders.fieldSort("timestamp").order(SortOrder.DESC)));
52-
record(queryContext, pivot, latestSpec, name, ParsedFilter.class);
52+
queryContext.recordNameForPivotSpec(pivot, latestSpec, name);
5353
return List.of(SeriesAggregationBuilder.metric(latest));
5454
}
5555

graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/views/searchtypes/pivot/series/ESMaxHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class ESMaxHandler extends ESPivotSeriesSpecHandler<Max, org.graylog.shad
3535
@Override
3636
public List<SeriesAggregationBuilder> doCreateAggregation(String name, Pivot pivot, Max maxSpec, ESSearchTypeHandler<Pivot> searchTypeHandler, ESGeneratedQueryContext queryContext) {
3737
final MaxAggregationBuilder max = AggregationBuilders.max(name).field(maxSpec.field());
38-
record(queryContext, pivot, maxSpec, name, org.graylog.shaded.elasticsearch7.org.elasticsearch.search.aggregations.metrics.Max.class);
38+
queryContext.recordNameForPivotSpec(pivot, maxSpec, name);
3939
return List.of(SeriesAggregationBuilder.metric(max));
4040
}
4141

0 commit comments

Comments
 (0)