[[search-aggregations-metrics-stats-aggregation]] === Stats Aggregation A `multi-value` metrics aggregation that computes stats over numeric values extracted from the aggregated documents. These values can be extracted either from specific numeric fields in the documents, or be generated by a provided script. The stats that are returned consist of: `min`, `max`, `sum`, `count` and `avg`. Assuming the data consists of documents representing exams grades (between 0 and 100) of students [source,js] -------------------------------------------------- { "aggs" : { "grades_stats" : { "stats" : { "field" : "grade" } } } } -------------------------------------------------- The above aggregation computes the grades statistics over all documents. The aggregation type is `stats` and the `field` setting defines the numeric field of the documents the stats will be computed on. The above will return the following: [source,js] -------------------------------------------------- { ... "aggregations": { "grades_stats": { "count": 6, "min": 60, "max": 98, "avg": 78.5, "sum": 471 } } } -------------------------------------------------- The name of the aggregation (`grades_stats` above) also serves as the key by which the aggregation result can be retrieved from the returned response. ==== Script Computing the grades stats based on a script: [source,js] -------------------------------------------------- { ..., "aggs" : { "grades_stats" : { "stats" : { "script" : "doc['grade'].value" } } } } -------------------------------------------------- ===== Value Script It turned out that the exam was way above the level of the students and a grade correction needs to be applied. We can use a value script to get the new stats: [source,js] -------------------------------------------------- { "aggs" : { ... "aggs" : { "grades_stats" : { "stats" : { "field" : "grade", "script" : "_value * correction", "params" : { "correction" : 1.2 } } } } } } --------------------------------------------------