Stores pre-aggregated numeric values for metric
aggregations. An aggregate_metric_double field is an object containing one
or more of the following metric sub-fields: min, max, sum, and
value_count.
When you run certain metric aggregations on an aggregate_metric_double field,
the aggregation uses the related sub-field’s values. For example, a
min aggregation on an
aggregate_metric_double field returns the minimum value of all min
sub-fields.
An aggregate_metric_double field stores a single numeric
doc value for each metric sub-field. Array values are not
supported. min, max, and sum values are double numbers. value_count
is a positive long number.
PUT my-index
{
"mappings": {
"properties": {
"my-agg-metric-field": {
"type": "aggregate_metric_double",
"metrics": [ "min", "max", "sum", "value_count" ],
"default_metric": "max"
}
}
}
}
-
metrics -
(Required, array of strings)
Array of metric sub-fields to store. Each value corresponds to a
metric aggregation. Valid values are
min,max,sum, andvalue_count. You must specify at least one value. -
default_metric -
(Required, string)
Default metric sub-field to use for queries, scripts, and aggregations that
don’t use a sub-field. Must be a value from the
metricsarray. -
time_series_metric -
[preview] This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. (Optional, string)
For internal use by Elastic only.
Marks the field as a time series metric. The value is the metric type. Defaults to
null(Not a time series metric).For
aggregate_metric_doublefields, this parameter acceptscounter,gauge, andsummary. You can’t update this parameter for existing fields.
We designed aggregate_metric_double fields for use with the following aggregations:
-
A
minaggregation returns the minimum value of allminsub-fields. -
A
maxaggregation returns the maximum value of allmaxsub-fields. -
A
sumaggregation returns the sum of the values of allsumsub-fields. -
A
value_countaggregation returns the sum of the values of allvalue_countsub-fields. -
A
avgaggregation. There is noavgsub-field; the result of theavgaggregation is computed using thesumandvalue_countmetrics. To run anavgaggregation, the field must contain bothsumandvalue_countmetric sub-field.
If you use an aggregate_metric_double field with other aggregations, the field
uses the default_metric value, which behaves as a double field. The
default_metric is also used in scripts and the following queries:
The following create index API request creates an
index with an aggregate_metric_double field named agg_metric. The request
sets max as the field’s default_metric.
PUT stats-index
{
"mappings": {
"properties": {
"agg_metric": {
"type": "aggregate_metric_double",
"metrics": [ "min", "max", "sum", "value_count" ],
"default_metric": "max"
}
}
}
}
The following index API request adds documents with
pre-aggregated data in the agg_metric field.
PUT stats-index/_doc/1
{
"agg_metric": {
"min": -302.50,
"max": 702.30,
"sum": 200.0,
"value_count": 25
}
}
PUT stats-index/_doc/2
{
"agg_metric": {
"min": -93.00,
"max": 1702.30,
"sum": 300.00,
"value_count": 25
}
}
You can run min, max, sum, value_count, and avg aggregations on a
agg_metric field.
POST stats-index/_search?size=0
{
"aggs": {
"metric_min": { "min": { "field": "agg_metric" } },
"metric_max": { "max": { "field": "agg_metric" } },
"metric_value_count": { "value_count": { "field": "agg_metric" } },
"metric_sum": { "sum": { "field": "agg_metric" } },
"metric_avg": { "avg": { "field": "agg_metric" } }
}
}
The aggregation results are based on related metric sub-field values.
{
...
"aggregations": {
"metric_min": {
"value": -302.5
},
"metric_max": {
"value": 1702.3
},
"metric_value_count": {
"value": 50
},
"metric_sum": {
"value": 500.0
},
"metric_avg": {
"value": 10.0
}
}
}
Queries on a aggregate_metric_double field use the default_metric value.
GET stats-index/_search
{
"query": {
"term": {
"agg_metric": {
"value": 702.30
}
}
}
}
The search returns the following hit. The value of the default_metric field,
max, matches the query value.
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "stats-index",
"_id": "1",
"_score": 1.0,
"_source": {
"agg_metric": {
"min": -302.5,
"max": 702.3,
"sum": 200.0,
"value_count": 25
}
}
}
]
}
}