summaryrefslogtreecommitdiff
path: root/docs/reference/aggregations/metrics/stats-aggregation.asciidoc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/reference/aggregations/metrics/stats-aggregation.asciidoc')
-rw-r--r--docs/reference/aggregations/metrics/stats-aggregation.asciidoc81
1 files changed, 81 insertions, 0 deletions
diff --git a/docs/reference/aggregations/metrics/stats-aggregation.asciidoc b/docs/reference/aggregations/metrics/stats-aggregation.asciidoc
new file mode 100644
index 0000000000..7fbdecd601
--- /dev/null
+++ b/docs/reference/aggregations/metrics/stats-aggregation.asciidoc
@@ -0,0 +1,81 @@
+[[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" } }
+ }
+}
+--------------------------------------------------
+
+TIP: The `script` parameter expects an inline script. Use `script_id` for indexed scripts and `script_file` for scripts in the `config/scripts/` directory.
+
+===== 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
+ }
+ }
+ }
+ }
+ }
+}
+-------------------------------------------------- \ No newline at end of file