diff --git a/server/src/internalClusterTest/java/org/opensearch/index/mapper/StarTreeMapperIT.java b/server/src/internalClusterTest/java/org/opensearch/index/mapper/StarTreeMapperIT.java
index 1cabb8b617ce3..6f5b4bba481dd 100644
--- a/server/src/internalClusterTest/java/org/opensearch/index/mapper/StarTreeMapperIT.java
+++ b/server/src/internalClusterTest/java/org/opensearch/index/mapper/StarTreeMapperIT.java
@@ -267,7 +267,7 @@ public void testValidCompositeIndex() {
                     assertEquals("numeric_dv", starTreeFieldType.getMetrics().get(0).getField());
                     List<MetricStat> expectedMetrics = Arrays.asList(
                         MetricStat.AVG,
-                        MetricStat.COUNT,
+                        MetricStat.VALUE_COUNT,
                         MetricStat.SUM,
                         MetricStat.MAX,
                         MetricStat.MIN
@@ -351,7 +351,7 @@ public void testUpdateIndexWhenMappingIsSame() {
                     assertEquals("numeric_dv", starTreeFieldType.getMetrics().get(0).getField());
                     List<MetricStat> expectedMetrics = Arrays.asList(
                         MetricStat.AVG,
-                        MetricStat.COUNT,
+                        MetricStat.VALUE_COUNT,
                         MetricStat.SUM,
                         MetricStat.MAX,
                         MetricStat.MIN
diff --git a/server/src/main/java/org/opensearch/index/compositeindex/datacube/MetricStat.java b/server/src/main/java/org/opensearch/index/compositeindex/datacube/MetricStat.java
index fbde296b15f7e..df3b2229d2c5b 100644
--- a/server/src/main/java/org/opensearch/index/compositeindex/datacube/MetricStat.java
+++ b/server/src/main/java/org/opensearch/index/compositeindex/datacube/MetricStat.java
@@ -17,7 +17,7 @@
  */
 @ExperimentalApi
 public enum MetricStat {
-    COUNT("count"),
+    VALUE_COUNT("value_count"),
     AVG("avg"),
     SUM("sum"),
     MIN("min"),
diff --git a/server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/StarTreeIndexSettings.java b/server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/StarTreeIndexSettings.java
index a2ac545be3cc9..6535f8ed11da3 100644
--- a/server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/StarTreeIndexSettings.java
+++ b/server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/StarTreeIndexSettings.java
@@ -97,7 +97,7 @@ public class StarTreeIndexSettings {
         "index.composite_index.star_tree.field.default.metrics",
         Arrays.asList(
             MetricStat.AVG.toString(),
-            MetricStat.COUNT.toString(),
+            MetricStat.VALUE_COUNT.toString(),
             MetricStat.SUM.toString(),
             MetricStat.MAX.toString(),
             MetricStat.MIN.toString()
diff --git a/server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregatorFactory.java b/server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregatorFactory.java
index 5e071e2491d19..ef5b773d81d27 100644
--- a/server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregatorFactory.java
+++ b/server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregatorFactory.java
@@ -30,7 +30,7 @@ public static ValueAggregator getValueAggregator(MetricStat aggregationType, Sta
             // avg aggregator will be covered in the part of query (using count and sum)
             case SUM:
                 return new SumValueAggregator(starTreeNumericType);
-            case COUNT:
+            case VALUE_COUNT:
                 return new CountValueAggregator(starTreeNumericType);
             case MIN:
                 return new MinValueAggregator(starTreeNumericType);
diff --git a/server/src/test/java/org/opensearch/common/util/ByteArrayBackedBitsetTests.java b/server/src/test/java/org/opensearch/common/util/ByteArrayBackedBitsetTests.java
new file mode 100644
index 0000000000000..6750a9e48f033
--- /dev/null
+++ b/server/src/test/java/org/opensearch/common/util/ByteArrayBackedBitsetTests.java
@@ -0,0 +1,56 @@
+/*
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * The OpenSearch Contributors require contributions made to
+ * this file be licensed under the Apache-2.0 license or a
+ * compatible open source license.
+ */
+
+package org.opensearch.common.util;
+
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.IOContext;
+import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.store.IndexOutput;
+import org.apache.lucene.store.RandomAccessInput;
+import org.opensearch.test.OpenSearchTestCase;
+
+import java.io.IOException;
+import java.nio.file.Path;
+
+/**
+ * Tests for {@link ByteArrayBackedBitset}
+ */
+public class ByteArrayBackedBitsetTests extends OpenSearchTestCase {
+    public void testWriteAndReadNullBitSets() throws IOException {
+        for (int k = 0; k < 10; k++) {
+            int randomArraySize = randomIntBetween(2, 300);
+            int randomIndex1 = randomIntBetween(0, (randomArraySize - 1) * 8);
+            int randomIndex2 = randomIntBetween(0, (randomArraySize - 1) * 8);
+            testWriteAndReadBitset(randomArraySize, randomIndex1, randomIndex2);
+        }
+    }
+
+    private static void testWriteAndReadBitset(int randomArraySize, int randomIndex1, int randomIndex2) throws IOException {
+        ByteArrayBackedBitset bitset = new ByteArrayBackedBitset(randomArraySize);
+        Path basePath = createTempDir("OffHeapTests");
+        FSDirectory fsDirectory = FSDirectory.open(basePath);
+        String TEST_FILE = "test_file";
+        IndexOutput indexOutput = fsDirectory.createOutput(TEST_FILE, IOContext.DEFAULT);
+        bitset.set(randomIndex1);
+        bitset.set(randomIndex2);
+        bitset.write(indexOutput);
+        indexOutput.close();
+
+        IndexInput in = fsDirectory.openInput(TEST_FILE, IOContext.DEFAULT);
+        RandomAccessInput randomAccessInput = in.randomAccessSlice(0, in.length());
+        ByteArrayBackedBitset bitset1 = new ByteArrayBackedBitset(randomAccessInput, 0, randomArraySize);
+        for (int i = 0; i < (randomArraySize * 8); i++) {
+            if (randomIndex1 == i || randomIndex2 == i) {
+                assertTrue(bitset1.get(i));
+            } else {
+                assertFalse(bitset1.get(i));
+            }
+        }
+    }
+}
diff --git a/server/src/test/java/org/opensearch/index/codec/composite/datacube/startree/StarTreeDocValuesFormatTests.java b/server/src/test/java/org/opensearch/index/codec/composite/datacube/startree/StarTreeDocValuesFormatTests.java
index 049d91bc42d9c..6fa88215cad48 100644
--- a/server/src/test/java/org/opensearch/index/codec/composite/datacube/startree/StarTreeDocValuesFormatTests.java
+++ b/server/src/test/java/org/opensearch/index/codec/composite/datacube/startree/StarTreeDocValuesFormatTests.java
@@ -126,7 +126,7 @@ private XContentBuilder getExpandedMapping(String dim, String metric) throws IOE
             b.field("name", "field");
             b.startArray("stats");
             b.value("sum");
-            b.value("count"); // TODO : THIS TEST FAILS.
+            b.value("value_count");
             b.endArray();
             b.endObject();
             b.endArray();
diff --git a/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/MetricAggregatorInfoTests.java b/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/MetricAggregatorInfoTests.java
index 73e6aeb44cfd7..62671ffa03b82 100644
--- a/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/MetricAggregatorInfoTests.java
+++ b/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/MetricAggregatorInfoTests.java
@@ -27,12 +27,12 @@ public void testConstructor() {
 
     public void testCountStarConstructor() {
         MetricAggregatorInfo pair = new MetricAggregatorInfo(
-            MetricStat.COUNT,
+            MetricStat.VALUE_COUNT,
             "anything",
             "star_tree_field",
             IndexNumericFieldData.NumericType.DOUBLE
         );
-        assertEquals(MetricStat.COUNT, pair.getMetricStat());
+        assertEquals(MetricStat.VALUE_COUNT, pair.getMetricStat());
         assertEquals("anything", pair.getField());
     }
 
@@ -62,7 +62,7 @@ public void testEquals() {
         assertEquals(pair1, pair2);
         assertNotEquals(
             pair1,
-            new MetricAggregatorInfo(MetricStat.COUNT, "column1", "star_tree_field", IndexNumericFieldData.NumericType.DOUBLE)
+            new MetricAggregatorInfo(MetricStat.VALUE_COUNT, "column1", "star_tree_field", IndexNumericFieldData.NumericType.DOUBLE)
         );
         assertNotEquals(
             pair1,
@@ -100,7 +100,7 @@ public void testCompareTo() {
             IndexNumericFieldData.NumericType.DOUBLE
         );
         MetricAggregatorInfo pair3 = new MetricAggregatorInfo(
-            MetricStat.COUNT,
+            MetricStat.VALUE_COUNT,
             "column1",
             "star_tree_field",
             IndexNumericFieldData.NumericType.DOUBLE
diff --git a/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregatorFactoryTests.java b/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregatorFactoryTests.java
index 5e0bedf5e06a5..6572d75d5b738 100644
--- a/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregatorFactoryTests.java
+++ b/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregatorFactoryTests.java
@@ -33,7 +33,7 @@ public void testGetValueAggregatorForMaxType() {
     }
 
     public void testGetValueAggregatorForCountType() {
-        ValueAggregator aggregator = ValueAggregatorFactory.getValueAggregator(MetricStat.COUNT, StarTreeNumericType.LONG);
+        ValueAggregator aggregator = ValueAggregatorFactory.getValueAggregator(MetricStat.VALUE_COUNT, StarTreeNumericType.LONG);
         assertNotNull(aggregator);
         assertEquals(CountValueAggregator.class, aggregator.getClass());
     }
diff --git a/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/builder/AbstractStarTreeBuilderTests.java b/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/builder/AbstractStarTreeBuilderTests.java
index 20982359a4db6..389b6cb34f085 100644
--- a/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/builder/AbstractStarTreeBuilderTests.java
+++ b/server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/builder/AbstractStarTreeBuilderTests.java
@@ -92,7 +92,7 @@ public void setup() throws IOException {
         metrics = List.of(
             new Metric("field2", List.of(MetricStat.SUM)),
             new Metric("field4", List.of(MetricStat.SUM)),
-            new Metric("field6", List.of(MetricStat.COUNT)),
+            new Metric("field6", List.of(MetricStat.VALUE_COUNT)),
             new Metric("field9", List.of(MetricStat.MIN)),
             new Metric("field10", List.of(MetricStat.MAX))
         );
@@ -1496,7 +1496,7 @@ private static StarTreeField getStarTreeFieldWithMultipleMetrics() {
         Dimension d1 = new NumericDimension("field1");
         Dimension d2 = new NumericDimension("field3");
         Metric m1 = new Metric("field2", List.of(MetricStat.SUM));
-        Metric m2 = new Metric("field2", List.of(MetricStat.COUNT));
+        Metric m2 = new Metric("field2", List.of(MetricStat.VALUE_COUNT));
         List<Dimension> dims = List.of(d1, d2);
         List<Metric> metrics = List.of(m1, m2);
         StarTreeFieldConfiguration c = new StarTreeFieldConfiguration(
@@ -1614,7 +1614,7 @@ public void testMergeFlowWithCount() throws IOException {
         List<Long> metricsList = List.of(0L, 1L, 2L, 3L, 4L, 5L, 6L);
         List<Integer> metricsWithField = List.of(0, 1, 2, 3, 4, 5, 6);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
@@ -1694,7 +1694,7 @@ public void testMergeFlowWithDifferentDocsFromSegments() throws IOException {
         List<Long> metricsList2 = List.of(5L, 6L, 7L, 8L, 9L);
         List<Integer> metricsWithField2 = List.of(0, 1, 2, 3, 4);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
@@ -1756,7 +1756,7 @@ public void testMergeFlowNumSegmentsDocs() throws IOException {
         List<Long> metricsList2 = List.of(5L, 6L, 7L, 8L, 9L);
         List<Integer> metricsWithField2 = List.of(0, 1, 2, 3, 4);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
@@ -1816,7 +1816,7 @@ public void testMergeFlowWithMissingDocs() throws IOException {
         List<Long> metricsList2 = List.of(5L, 6L, 7L, 8L, 9L);
         List<Integer> metricsWithField2 = List.of(0, 1, 2, 3, 4);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
@@ -1878,7 +1878,7 @@ public void testMergeFlowWithMissingDocsWithZero() throws IOException {
         List<Long> metricsList2 = List.of(5L, 6L, 7L, 8L, 9L);
         List<Integer> metricsWithField2 = List.of(0, 1, 2, 3, 4);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
@@ -1941,7 +1941,7 @@ public void testMergeFlowWithMissingDocsWithZeroComplexCase() throws IOException
         List<Long> metricsList2 = List.of(5L, 6L, 7L, 8L, 9L);
         List<Integer> metricsWithField2 = List.of(0, 1, 2, 3, 4);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
@@ -2008,7 +2008,7 @@ public void testMergeFlowWithMissingDocsInSecondDim() throws IOException {
         List<Long> metricsList2 = List.of(5L, 6L, 7L, 8L, 9L);
         List<Integer> metricsWithField2 = List.of(0, 1, 2, 3, 4);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
@@ -2071,7 +2071,7 @@ public void testMergeFlowWithDocsMissingAtTheEnd() throws IOException {
         List<Long> metricsList2 = List.of(5L, 6L, 7L, 8L, 9L);
         List<Integer> metricsWithField2 = List.of(0, 1, 2, 3, 4);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
@@ -2125,7 +2125,7 @@ public void testMergeFlowWithEmptyFieldsInOneSegment() throws IOException {
         List<Long> metricsList = List.of(0L, 1L, 2L, 3L, 4L, 5L, 6L);
         List<Integer> metricsWithField = List.of(0, 1, 2, 3, 4, 5, 6);
 
-        StarTreeField sf = getStarTreeField(MetricStat.COUNT);
+        StarTreeField sf = getStarTreeField(MetricStat.VALUE_COUNT);
         StarTreeValues starTreeValues = getStarTreeValues(
             getSortedNumericMock(dimList, docsWithField),
             getSortedNumericMock(dimList2, docsWithField2),
diff --git a/server/src/test/java/org/opensearch/index/mapper/StarTreeMapperTests.java b/server/src/test/java/org/opensearch/index/mapper/StarTreeMapperTests.java
index 132d2ff5a566a..3fa97825cdfc6 100644
--- a/server/src/test/java/org/opensearch/index/mapper/StarTreeMapperTests.java
+++ b/server/src/test/java/org/opensearch/index/mapper/StarTreeMapperTests.java
@@ -94,7 +94,7 @@ public void testValidStarTreeDefaults() throws IOException {
             assertEquals("status", starTreeFieldType.getMetrics().get(0).getField());
             List<MetricStat> expectedMetrics = Arrays.asList(
                 MetricStat.AVG,
-                MetricStat.COUNT,
+                MetricStat.VALUE_COUNT,
                 MetricStat.SUM,
                 MetricStat.MAX,
                 MetricStat.MIN
@@ -223,11 +223,11 @@ public void testMetric() {
         assertEquals(metric1, metric2);
         List<MetricStat> m2 = new ArrayList<>();
         m2.add(MetricStat.MAX);
-        m2.add(MetricStat.COUNT);
+        m2.add(MetricStat.VALUE_COUNT);
         metric2 = new Metric("name", m2);
         assertNotEquals(metric1, metric2);
 
-        assertEquals(MetricStat.COUNT, MetricStat.fromTypeName("count"));
+        assertEquals(MetricStat.VALUE_COUNT, MetricStat.fromTypeName("value_count"));
         assertEquals(MetricStat.MAX, MetricStat.fromTypeName("max"));
         assertEquals(MetricStat.MIN, MetricStat.fromTypeName("min"));
         assertEquals(MetricStat.SUM, MetricStat.fromTypeName("sum"));