3434import org .opensearch .index .compositeindex .datacube .startree .node .InMemoryTreeNode ;
3535import org .opensearch .index .compositeindex .datacube .startree .node .StarTreeNodeType ;
3636import org .opensearch .index .compositeindex .datacube .startree .utils .SequentialDocValuesIterator ;
37+ import org .opensearch .index .compositeindex .datacube .startree .utils .iterator .SortedNumericStarTreeValuesIterator ;
3738import org .opensearch .index .mapper .DocCountFieldMapper ;
3839import org .opensearch .index .mapper .FieldMapper ;
3940import org .opensearch .index .mapper .FieldValueConverter ;
@@ -193,7 +194,9 @@ public List<SequentialDocValuesIterator> getMetricReaders(SegmentWriteState stat
193194 metricFieldInfo = getFieldInfo (metric .getField (), DocValuesType .SORTED_NUMERIC );
194195 }
195196 metricReader = new SequentialDocValuesIterator (
196- fieldProducerMap .get (metricFieldInfo .name ).getSortedNumeric (metricFieldInfo )
197+ new SortedNumericStarTreeValuesIterator (
198+ fieldProducerMap .get (metricFieldInfo .name ).getSortedNumeric (metricFieldInfo )
199+ )
197200 );
198201 }
199202 metricReaders .add (metricReader );
@@ -228,7 +231,7 @@ public void build(
228231 dimensionFieldInfo = getFieldInfo (dimension , DocValuesType .SORTED_NUMERIC );
229232 }
230233 dimensionReaders [i ] = new SequentialDocValuesIterator (
231- fieldProducerMap .get (dimensionFieldInfo .name ).getSortedNumeric (dimensionFieldInfo )
234+ new SortedNumericStarTreeValuesIterator ( fieldProducerMap .get (dimensionFieldInfo .name ).getSortedNumeric (dimensionFieldInfo ) )
232235 );
233236 }
234237 Iterator <StarTreeDocument > starTreeDocumentIterator = sortAndAggregateSegmentDocuments (dimensionReaders , metricReaders );
@@ -287,7 +290,7 @@ void appendDocumentsToStarTree(Iterator<StarTreeDocument> starTreeDocumentIterat
287290 }
288291 }
289292
290- private void serializeStarTree (int numSegmentStarTreeDocument , int numStarTreeDocs ) throws IOException {
293+ private void serializeStarTree (int numSegmentStarTreeDocuments , int numStarTreeDocs ) throws IOException {
291294 // serialize the star tree data
292295 long dataFilePointer = dataOut .getFilePointer ();
293296 StarTreeWriter starTreeWriter = new StarTreeWriter ();
@@ -299,7 +302,7 @@ private void serializeStarTree(int numSegmentStarTreeDocument, int numStarTreeDo
299302 starTreeField ,
300303 metricAggregatorInfos ,
301304 numStarTreeNodes ,
302- numSegmentStarTreeDocument ,
305+ numSegmentStarTreeDocuments ,
303306 numStarTreeDocs ,
304307 dataFilePointer ,
305308 totalStarTreeDataLength
@@ -400,22 +403,20 @@ protected StarTreeDocument getStarTreeDocument(
400403 ) throws IOException {
401404 Long [] dims = new Long [numDimensions ];
402405 int i = 0 ;
403- for (SequentialDocValuesIterator dimensionDocValueIterator : dimensionReaders ) {
404- dimensionDocValueIterator . nextDoc (currentDocId );
405- Long val = dimensionDocValueIterator .value (currentDocId );
406+ for (SequentialDocValuesIterator dimensionValueIterator : dimensionReaders ) {
407+ dimensionValueIterator . nextEntry (currentDocId );
408+ Long val = dimensionValueIterator .value (currentDocId );
406409 dims [i ] = val ;
407410 i ++;
408411 }
409412 i = 0 ;
410413 Object [] metrics = new Object [metricReaders .size ()];
411- for (SequentialDocValuesIterator metricDocValuesIterator : metricReaders ) {
412- metricDocValuesIterator . nextDoc (currentDocId );
414+ for (SequentialDocValuesIterator metricValuesIterator : metricReaders ) {
415+ metricValuesIterator . nextEntry (currentDocId );
413416 // As part of merge, we traverse the star tree doc values
414417 // The type of data stored in metric fields is different from the
415418 // actual indexing field they're based on
416- metrics [i ] = metricAggregatorInfos .get (i )
417- .getValueAggregators ()
418- .toAggregatedValueType (metricDocValuesIterator .value (currentDocId ));
419+ metrics [i ] = metricAggregatorInfos .get (i ).getValueAggregators ().toAggregatedValueType (metricValuesIterator .value (currentDocId ));
419420 i ++;
420421 }
421422 return new StarTreeDocument (dims , metrics );
@@ -502,7 +503,7 @@ Long[] getStarTreeDimensionsFromSegment(int currentDocId, SequentialDocValuesIte
502503 for (int i = 0 ; i < numDimensions ; i ++) {
503504 if (dimensionReaders [i ] != null ) {
504505 try {
505- dimensionReaders [i ].nextDoc (currentDocId );
506+ dimensionReaders [i ].nextEntry (currentDocId );
506507 } catch (IOException e ) {
507508 logger .error ("unable to iterate to next doc" , e );
508509 throw new RuntimeException ("unable to iterate to next doc" , e );
@@ -530,7 +531,7 @@ private Object[] getStarTreeMetricsFromSegment(int currentDocId, List<Sequential
530531 SequentialDocValuesIterator metricStatReader = metricsReaders .get (i );
531532 if (metricStatReader != null ) {
532533 try {
533- metricStatReader .nextDoc (currentDocId );
534+ metricStatReader .nextEntry (currentDocId );
534535 } catch (IOException e ) {
535536 logger .error ("unable to iterate to next doc" , e );
536537 throw new RuntimeException ("unable to iterate to next doc" , e );
@@ -672,7 +673,7 @@ private SequentialDocValuesIterator getIteratorForNumericField(
672673 SequentialDocValuesIterator sequentialDocValuesIterator ;
673674 assert fieldProducerMap .containsKey (fieldInfo .name );
674675 sequentialDocValuesIterator = new SequentialDocValuesIterator (
675- DocValues .singleton (fieldProducerMap .get (fieldInfo .name ).getNumeric (fieldInfo ))
676+ new SortedNumericStarTreeValuesIterator ( DocValues .singleton (fieldProducerMap .get (fieldInfo .name ).getNumeric (fieldInfo ) ))
676677 );
677678 return sequentialDocValuesIterator ;
678679 }
0 commit comments