[role="xpack"]
[testenv="platinum"]
[[get-dfanalytics-stats]]
=== Get {dfanalytics-jobs} statistics API
[subs="attributes"]
++++
Get {dfanalytics-jobs} stats
++++
Retrieves usage information for {dfanalytics-jobs}.
experimental[]
[[ml-get-dfanalytics-stats-request]]
==== {api-request-title}
`GET _ml/data_frame/analytics//_stats` +
`GET _ml/data_frame/analytics/,/_stats` +
`GET _ml/data_frame/analytics/_stats` +
`GET _ml/data_frame/analytics/_all/_stats` +
`GET _ml/data_frame/analytics/*/_stats`
[[ml-get-dfanalytics-stats-prereq]]
==== {api-prereq-title}
If the {es} {security-features} are enabled, you must have the following privileges:
* cluster: `monitor_ml`
For more information, see <> and <>.
[[ml-get-dfanalytics-stats-path-params]]
==== {api-path-parms-title}
``::
(Optional, string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=job-id-data-frame-analytics-default]
[[ml-get-dfanalytics-stats-query-params]]
==== {api-query-parms-title}
`allow_no_match`::
(Optional, boolean)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=allow-no-match]
`from`::
(Optional, integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=from]
`size`::
(Optional, integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=size]
[role="child_attributes"]
[[ml-get-dfanalytics-stats-response-body]]
==== {api-response-body-title}
`data_frame_analytics`::
(array)
An array of objects that contain usage information for {dfanalytics-jobs}, which
are sorted by the `id` value in ascending order.
+
.Properties of {dfanalytics-job} usage resources
[%collapsible%open]
====
//Begin analysis_stats
`analysis_stats`:::
(object)
An object containing information about the analysis job.
+
.Properties of `analysis_stats`
[%collapsible%open]
=====
//Begin classification_stats
`classification_stats`::::
(object)
An object containing information about the {classanalysis} job.
+
.Properties of `classification_stats`
[%collapsible%open]
======
//Begin class_hyperparameters
`hyperparameters`::::
(object)
An object containing the parameters of the {classanalysis} job.
+
.Properties of `hyperparameters`
[%collapsible%open]
=======
`alpha`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-alpha]
`class_assignment_objective`::::
(string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=class-assignment-objective]
`downsample_factor`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-downsample-factor]
`eta`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=eta]
`eta_growth_rate_per_tree`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-eta-growth]
`feature_bag_fraction`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=feature-bag-fraction]
`gamma`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=gamma]
`lambda`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=lambda]
`max_attempts_to_add_tree`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-max-attempts]
`max_optimization_rounds_per_hyperparameter`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-max-optimization-rounds]
`max_trees`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=max-trees]
`num_folds`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-num-folds]
`num_splits_per_feature`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-num-splits]
`soft_tree_depth_limit`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-soft-limit]
`soft_tree_depth_tolerance`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-soft-tolerance]
=======
//End class_hyperparameters
`iteration`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-iteration]
`timestamp`::::
(date)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timestamp]
//Begin class_timing_stats
`timing_stats`::::
(object)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timing-stats]
+
.Properties of `timing_stats`
[%collapsible%open]
=======
`elapsed_time`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timing-stats-elapsed]
`iteration_time`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timing-stats-iteration]
=======
//End class_timing_stats
//Begin class_validation_loss
`validation_loss`::::
(object)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-validation-loss]
+
.Properties of `validation_loss`
[%collapsible%open]
=======
`fold_values`::::
(array of strings)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-validation-loss-fold]
`loss_type`::::
(string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-validation-loss-type]
=======
//End class_validation_loss
======
//End classification_stats
//Begin outlier_detection_stats
`outlier_detection_stats`::::
(object)
An object containing information about the {oldetection} job.
+
.Properties of `outlier_detection_stats`
[%collapsible%open]
======
//Begin parameters
`parameters`::::
(object)
The list of job parameters specified by the user or determined by algorithmic
heuristics.
+
.Properties of `parameters`
[%collapsible%open]
=======
`compute_feature_influence`::::
(boolean)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=compute-feature-influence]
`feature_influence_threshold`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=feature-influence-threshold]
`method`::::
(string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=method]
`n_neighbors`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=n-neighbors]
`outlier_fraction`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=outlier-fraction]
`standardization_enabled`::::
(boolean)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=standardization-enabled]
=======
//End parameters
`timestamp`::::
(date)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timestamp]
//Begin od_timing_stats
`timing_stats`::::
(object)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timing-stats]
+
.Property of `timing_stats`
[%collapsible%open]
=======
`elapsed_time`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timing-stats-elapsed]
=======
//End od_timing_stats
======
//End outlier_detection_stats
//Begin regression_stats
`regression_stats`::::
(object)
An object containing information about the {reganalysis}.
+
.Properties of `regression_stats`
[%collapsible%open]
======
//Begin reg_hyperparameters
`hyperparameters`::::
(object)
An object containing the parameters of the {reganalysis}.
+
.Properties of `hyperparameters`
[%collapsible%open]
=======
`alpha`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-alpha]
`downsample_factor`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-downsample-factor]
`eta`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=eta]
`eta_growth_rate_per_tree`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-eta-growth]
`feature_bag_fraction`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=feature-bag-fraction]
`gamma`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=gamma]
`lambda`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=lambda]
`max_attempts_to_add_tree`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-max-attempts]
`max_optimization_rounds_per_hyperparameter`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-max-optimization-rounds]
`max_trees`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=max-trees]
`num_folds`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-num-folds]
`num_splits_per_feature`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-num-splits]
`soft_tree_depth_limit`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-soft-limit]
`soft_tree_depth_tolerance`::::
(double)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-soft-tolerance]
=======
//End reg_hyperparameters
`iteration`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-iteration]
`timestamp`::::
(date)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timestamp]
//Begin reg_timing_stats
`timing_stats`::::
(object)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timing-stats]
+
.Propertis of `timing_stats`
[%collapsible%open]
=======
`elapsed_time`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timing-stats-elapsed]
`iteration_time`::::
(integer)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-timing-stats-iteration]
=======
//End reg_timing_stats
//Begin reg_validation_loss
`validation_loss`::::
(object)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-validation-loss]
+
.Properties of `validation_loss`
[%collapsible%open]
=======
`fold_values`::::
(array of strings)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-validation-loss-fold]
`loss_type`::::
(string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=dfas-validation-loss-type]
=======
//End reg_validation_loss
======
//End regression_stats
=====
//End analysis_stats
`assignment_explanation`:::
(string)
For running jobs only, contains messages relating to the selection of a node to
run the job.
//Begin data_counts
`data_counts`:::
(object)
An object that provides counts for the quantity of documents skipped, used in
training, or available for testing.
+
.Properties of `data_counts`
[%collapsible%open]
=====
`skipped_docs_count`:::
(integer)
The number of documents that are skipped during the analysis because they
contained values that are not supported by the analysis. For example,
{oldetection} does not support missing fields so it skips documents with missing
fields. Likewise, all types of analysis skip documents that contain arrays with
more than one element.
`test_docs_count`:::
(integer)
The number of documents that are not used for training the model and can be used
for testing.
`training_docs_count`:::
(integer)
The number of documents that are used for training the model.
=====
//End data_counts
`id`:::
(string)
The unique identifier of the {dfanalytics-job}.
`memory_usage`:::
(Optional, object)
An object describing memory usage of the analytics. It is present only after the
job is started and memory usage is reported.
+
.Properties of `memory_usage`
[%collapsible%open]
=====
`memory_reestimate_bytes`::::
(long)
This value is present when the `status` is `hard_limit` and it
is a new estimate of how much memory the job needs.
`peak_usage_bytes`::::
(long)
The number of bytes used at the highest peak of memory usage.
`status`::::
(string)
The memory usage status. May have one of the following values:
+
--
* `ok`: usage stayed below the limit.
* `hard_limit`: usage surpassed the configured memory limit.
--
`timestamp`::::
(date)
The timestamp when memory usage was calculated.
=====
`node`:::
(object)
Contains properties for the node that runs the job. This information is
available only for running jobs.
+
.Properties of `node`
[%collapsible%open]
=====
`attributes`:::
(object)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=node-attributes]
`ephemeral_id`:::
(string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=node-ephemeral-id]
`id`:::
(string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=node-id]
`name`:::
(string)
The node name.
`transport_address`:::
(string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=node-transport-address]
=====
`progress`:::
(array) The progress report of the {dfanalytics-job} by phase.
+
.Properties of phase objects
[%collapsible%open]
=====
`phase`:::
(string) Defines the phase of the {dfanalytics-job}. Possible phases:
* `reindexing`,
* `loading_data`,
* `computing_outliers` (for {oldetection} only),
* `feature_selection` (for {regression} and {classification} only),
* `coarse_parameter_search` (for {regression} and {classification} only),
* `fine_tuning_parameters` (for {regression} and {classification} only),
* `final_training` (for {regression} and {classification} only),
* `writing_results`.
+
To learn more about the different phases, refer to
{ml-docs}/ml-dfa-phases.html[How a {dfanalytics} job works].
`progress_percent`:::
(integer) The progress that the {dfanalytics-job} has made expressed in
percentage.
=====
`state`:::
(string) The status of the {dfanalytics-job}, which can be one of the following
values: `analyzing`, `failed`, `reindexing`, `started`, `starting`, `stopped`,
`stopping`.
====
//End of data_frame_analytics
[[ml-get-dfanalytics-stats-response-codes]]
==== {api-response-codes-title}
`404` (Missing resources)::
If `allow_no_match` is `false`, this code indicates that there are no
resources that match the request or only partial matches for the request.
[[ml-get-dfanalytics-stats-example]]
==== {api-examples-title}
The following API retrieves usage information for the
{ml-docs}/ecommerce-outliers.html[{oldetection} {dfanalytics-job} example]:
[source,console]
--------------------------------------------------
GET _ml/data_frame/analytics/ecommerce/_stats
--------------------------------------------------
// TEST[skip:Kibana sample data]
The API returns the following results:
[source,console-result]
----
{
"count" : 1,
"data_frame_analytics" : [
{
"id" : "ecommerce",
"state" : "stopped",
"progress" : [
{
"phase" : "reindexing",
"progress_percent" : 100
},
{
"phase" : "loading_data",
"progress_percent" : 100
},
{
"phase" : "analyzing",
"progress_percent" : 100
},
{
"phase" : "writing_results",
"progress_percent" : 100
}
],
"data_counts" : {
"training_docs_count" : 3321,
"test_docs_count" : 0,
"skipped_docs_count" : 0
},
"memory_usage" : {
"timestamp" : 1586905058000,
"peak_usage_bytes" : 279484
},
"analysis_stats" : {
"outlier_detection_stats" : {
"timestamp" : 1586905058000,
"parameters" : {
"n_neighbors" : 0,
"method" : "ensemble",
"compute_feature_influence" : true,
"feature_influence_threshold" : 0.1,
"outlier_fraction" : 0.05,
"standardization_enabled" : true
},
"timing_stats" : {
"elapsed_time" : 245
}
}
}
}
]
}
----