From eea010b40863f1577992a6a010c4c86e282527a0 Mon Sep 17 00:00:00 2001
From: Tanguy Leroux <tlrx.dev@gmail.com>
Date: Tue, 30 May 2017 10:16:08 +0200
Subject: [PATCH] Add doc_count to ParsedMatrixStats (#24952)

This commit adds support in ParsedMatrixStats for parsing the doc_count
field.

Related to #24776
---
 .../aggregations/matrix/stats/ParsedMatrixStats.java   | 10 +++++++++-
 .../matrix/stats/InternalMatrixStatsTests.java         |  3 +--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/matrix/stats/ParsedMatrixStats.java b/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/matrix/stats/ParsedMatrixStats.java
index 62b51a8dd93..a0b9224ad0d 100644
--- a/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/matrix/stats/ParsedMatrixStats.java
+++ b/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/matrix/stats/ParsedMatrixStats.java
@@ -41,14 +41,20 @@ public class ParsedMatrixStats extends ParsedAggregation implements MatrixStats
     private final Map<String, Map<String, Double>> covariances = new HashMap<>();
     private final Map<String, Map<String, Double>> correlations = new HashMap<>();
 
+    private long docCount;
+
     @Override
     public String getType() {
         return MatrixStatsAggregationBuilder.NAME;
     }
 
+    private void setDocCount(long docCount) {
+        this.docCount = docCount;
+    }
+
     @Override
     public long getDocCount() {
-        throw new UnsupportedOperationException();
+        return docCount;
     }
 
     @Override
@@ -97,6 +103,7 @@ public class ParsedMatrixStats extends ParsedAggregation implements MatrixStats
 
     @Override
     protected XContentBuilder doXContentBody(XContentBuilder builder, Params params) throws IOException {
+        builder.field(CommonFields.DOC_COUNT.getPreferredName(), getDocCount());
         if (counts != null && counts.isEmpty() == false) {
             builder.startArray(InternalMatrixStats.Fields.FIELDS);
             for (String fieldName : counts.keySet()) {
@@ -148,6 +155,7 @@ public class ParsedMatrixStats extends ParsedAggregation implements MatrixStats
             new ObjectParser<>(ParsedMatrixStats.class.getSimpleName(), true, ParsedMatrixStats::new);
     static {
         declareAggregationFields(PARSER);
+        PARSER.declareLong(ParsedMatrixStats::setDocCount, CommonFields.DOC_COUNT);
         PARSER.declareObjectArray((matrixStats, results) -> {
             for (ParsedMatrixStatsResult result : results) {
                 final String fieldName = result.name;
diff --git a/modules/aggs-matrix-stats/src/test/java/org/elasticsearch/search/aggregations/matrix/stats/InternalMatrixStatsTests.java b/modules/aggs-matrix-stats/src/test/java/org/elasticsearch/search/aggregations/matrix/stats/InternalMatrixStatsTests.java
index 13c67b9dbb3..a6c6ed834d8 100644
--- a/modules/aggs-matrix-stats/src/test/java/org/elasticsearch/search/aggregations/matrix/stats/InternalMatrixStatsTests.java
+++ b/modules/aggs-matrix-stats/src/test/java/org/elasticsearch/search/aggregations/matrix/stats/InternalMatrixStatsTests.java
@@ -133,8 +133,7 @@ public class InternalMatrixStatsTests extends InternalAggregationTestCase<Intern
         assertTrue(parsedAggregation instanceof ParsedMatrixStats);
         ParsedMatrixStats actual = (ParsedMatrixStats) parsedAggregation;
 
-        //norelease add parsing logic for doc count and enable this test once elastic/elasticsearch#24776 is merged
-        //assertEquals(expected.getDocCount(), actual.getDocCount());
+        assertEquals(expected.getDocCount(), actual.getDocCount());
 
         for (String field : fields) {
             assertEquals(expected.getFieldCount(field), actual.getFieldCount(field));