Implement aggregate_metric field mapper#49830
Implement aggregate_metric field mapper#49830csoulios merged 31 commits intoelastic:feature/aggregate-metricsfrom
Conversation
|
Pinging @elastic/es-analytics-geo (:Analytics/Rollup) |
iverase
left a comment
There was a problem hiding this comment.
Thanks @csoulios.
I think the parse logic should be on the parse method not the parseCreateField method. The latter is used (I think) for dynamic mapping and I don't think this field allow that.
I am not sure the leniency in the parse logic. I would like to confirm it but if there is an error on one of the metrics (does not exist or have an incorrect value) we should stop generating the doc value if ignore malformed is true.
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...n/rollup/src/main/java/org/elasticsearch/xpack/rollup/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
polyfractal
left a comment
There was a problem hiding this comment.
Left a few comments! :)
Open question for discussion: since this is isolated functionality at the moment (can configure but not actually use the fields yet), should we potentially merge to a feature branch instead? Not sure of our plans to backport to 7x, but it would make a potential backport (or revert) easier too.
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackSettings.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
| "] must contain all metrics " + metrics.value().toString()); | ||
| } | ||
|
|
||
| if (fieldType().hasDocValues()) { |
There was a problem hiding this comment.
I wonder if we should override setHasDocValues() on the MappedFieldType so that it throws an exception if the user tries to disable doc values? Since we don't index anything and only store doc values, seems like we shouldn't let the user disable them?
Not sure, WDYT?
|
@elasticmachine run elasticsearch-ci/bwc |
Make parsing of malformed values stricter and ignore all field metrics even if a single metric is wrong
|
@elasticmachine run elasticsearch-ci/bwc |
| builder.store(false); | ||
| builder.index(true); | ||
| builder.docValues(true); | ||
| builder.fieldType().setDocValuesType(DocValuesType.NUMERIC); |
There was a problem hiding this comment.
All these options are set by default in the NumberFieldMapper.Builder
...in/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
| public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, QueryShardContext context) { | ||
| return delegateFieldType().rangeQuery(lowerTerm, upperTerm, includeLower, includeUpper, context); | ||
| } | ||
|
|
There was a problem hiding this comment.
you should also override isFieldWithinQuery to handle range queries efficiently, fielddataBuilder to handle aggregations and sort, and docValueFormat to format double correctly.
...in/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java
Show resolved
Hide resolved
...in/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java
Outdated
Show resolved
Hide resolved
...test/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricTypeTests.java
Outdated
Show resolved
Hide resolved
x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/Rollup.java
Outdated
Show resolved
Hide resolved
iverase
left a comment
There was a problem hiding this comment.
I understand the idea now. It is looking good, just left a few comments for clarification.
...in/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java
Show resolved
Hide resolved
...in/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java
Show resolved
Hide resolved
...in/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java
Show resolved
Hide resolved
...in/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java
Show resolved
Hide resolved
|
@elasticmachine run elasticsearch-ci/1 |
Following the implementation of the aggregate_metric_double field mapper(#49830) we are implementing the Min, Max, ValueCount, Sum and Average aggregations on aggregate metrics. The code builds on the excellent work done for #42949 and uses the extensible ValuesSources infrastructure to wire up common metric aggregation on the aggregate_metric_double field type. This PR is part of the rollups v2 refactoring as described in meta issue #42720
This PR addresses part of #42720 creating a field mapper for storing pre-computed aggregate metrics such as
min,max,sumandvalue_count