34
34
import org .opensearch .index .compositeindex .datacube .startree .node .InMemoryTreeNode ;
35
35
import org .opensearch .index .compositeindex .datacube .startree .node .StarTreeNodeType ;
36
36
import org .opensearch .index .compositeindex .datacube .startree .utils .SequentialDocValuesIterator ;
37
+ import org .opensearch .index .compositeindex .datacube .startree .utils .iterator .SortedNumericStarTreeValuesIterator ;
37
38
import org .opensearch .index .mapper .DocCountFieldMapper ;
38
39
import org .opensearch .index .mapper .FieldMapper ;
39
40
import org .opensearch .index .mapper .FieldValueConverter ;
@@ -193,7 +194,9 @@ public List<SequentialDocValuesIterator> getMetricReaders(SegmentWriteState stat
193
194
metricFieldInfo = getFieldInfo (metric .getField (), DocValuesType .SORTED_NUMERIC );
194
195
}
195
196
metricReader = new SequentialDocValuesIterator (
196
- fieldProducerMap .get (metricFieldInfo .name ).getSortedNumeric (metricFieldInfo )
197
+ new SortedNumericStarTreeValuesIterator (
198
+ fieldProducerMap .get (metricFieldInfo .name ).getSortedNumeric (metricFieldInfo )
199
+ )
197
200
);
198
201
}
199
202
metricReaders .add (metricReader );
@@ -228,7 +231,7 @@ public void build(
228
231
dimensionFieldInfo = getFieldInfo (dimension , DocValuesType .SORTED_NUMERIC );
229
232
}
230
233
dimensionReaders [i ] = new SequentialDocValuesIterator (
231
- fieldProducerMap .get (dimensionFieldInfo .name ).getSortedNumeric (dimensionFieldInfo )
234
+ new SortedNumericStarTreeValuesIterator ( fieldProducerMap .get (dimensionFieldInfo .name ).getSortedNumeric (dimensionFieldInfo ) )
232
235
);
233
236
}
234
237
Iterator <StarTreeDocument > starTreeDocumentIterator = sortAndAggregateSegmentDocuments (dimensionReaders , metricReaders );
@@ -287,7 +290,7 @@ void appendDocumentsToStarTree(Iterator<StarTreeDocument> starTreeDocumentIterat
287
290
}
288
291
}
289
292
290
- private void serializeStarTree (int numSegmentStarTreeDocument , int numStarTreeDocs ) throws IOException {
293
+ private void serializeStarTree (int numSegmentStarTreeDocuments , int numStarTreeDocs ) throws IOException {
291
294
// serialize the star tree data
292
295
long dataFilePointer = dataOut .getFilePointer ();
293
296
StarTreeWriter starTreeWriter = new StarTreeWriter ();
@@ -299,7 +302,7 @@ private void serializeStarTree(int numSegmentStarTreeDocument, int numStarTreeDo
299
302
starTreeField ,
300
303
metricAggregatorInfos ,
301
304
numStarTreeNodes ,
302
- numSegmentStarTreeDocument ,
305
+ numSegmentStarTreeDocuments ,
303
306
numStarTreeDocs ,
304
307
dataFilePointer ,
305
308
totalStarTreeDataLength
@@ -400,22 +403,20 @@ protected StarTreeDocument getStarTreeDocument(
400
403
) throws IOException {
401
404
Long [] dims = new Long [numDimensions ];
402
405
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 );
406
409
dims [i ] = val ;
407
410
i ++;
408
411
}
409
412
i = 0 ;
410
413
Object [] metrics = new Object [metricReaders .size ()];
411
- for (SequentialDocValuesIterator metricDocValuesIterator : metricReaders ) {
412
- metricDocValuesIterator . nextDoc (currentDocId );
414
+ for (SequentialDocValuesIterator metricValuesIterator : metricReaders ) {
415
+ metricValuesIterator . nextEntry (currentDocId );
413
416
// As part of merge, we traverse the star tree doc values
414
417
// The type of data stored in metric fields is different from the
415
418
// 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 ));
419
420
i ++;
420
421
}
421
422
return new StarTreeDocument (dims , metrics );
@@ -502,7 +503,7 @@ Long[] getStarTreeDimensionsFromSegment(int currentDocId, SequentialDocValuesIte
502
503
for (int i = 0 ; i < numDimensions ; i ++) {
503
504
if (dimensionReaders [i ] != null ) {
504
505
try {
505
- dimensionReaders [i ].nextDoc (currentDocId );
506
+ dimensionReaders [i ].nextEntry (currentDocId );
506
507
} catch (IOException e ) {
507
508
logger .error ("unable to iterate to next doc" , e );
508
509
throw new RuntimeException ("unable to iterate to next doc" , e );
@@ -530,7 +531,7 @@ private Object[] getStarTreeMetricsFromSegment(int currentDocId, List<Sequential
530
531
SequentialDocValuesIterator metricStatReader = metricsReaders .get (i );
531
532
if (metricStatReader != null ) {
532
533
try {
533
- metricStatReader .nextDoc (currentDocId );
534
+ metricStatReader .nextEntry (currentDocId );
534
535
} catch (IOException e ) {
535
536
logger .error ("unable to iterate to next doc" , e );
536
537
throw new RuntimeException ("unable to iterate to next doc" , e );
@@ -672,7 +673,7 @@ private SequentialDocValuesIterator getIteratorForNumericField(
672
673
SequentialDocValuesIterator sequentialDocValuesIterator ;
673
674
assert fieldProducerMap .containsKey (fieldInfo .name );
674
675
sequentialDocValuesIterator = new SequentialDocValuesIterator (
675
- DocValues .singleton (fieldProducerMap .get (fieldInfo .name ).getNumeric (fieldInfo ))
676
+ new SortedNumericStarTreeValuesIterator ( DocValues .singleton (fieldProducerMap .get (fieldInfo .name ).getNumeric (fieldInfo ) ))
676
677
);
677
678
return sequentialDocValuesIterator ;
678
679
}
0 commit comments