Example usage for org.apache.lucene.index OrdinalMap ramBytesUsed

List of usage examples for org.apache.lucene.index OrdinalMap ramBytesUsed

Introduction

In this page you can find the example usage for org.apache.lucene.index OrdinalMap ramBytesUsed.

Prototype

long ramBytesUsed

To view the source code for org.apache.lucene.index OrdinalMap ramBytesUsed.

Click Source Link

Usage

From source file:org.elasticsearch.index.fielddata.ordinals.GlobalOrdinalsBuilder.java

License:Apache License

/**
 * Build global ordinals for the provided {@link IndexReader}.
 *//*  w  w  w. ja  va 2s.  c  o  m*/
public static IndexOrdinalsFieldData build(final IndexReader indexReader, IndexOrdinalsFieldData indexFieldData,
        Settings settings, CircuitBreakerService breakerService, ESLogger logger) throws IOException {
    assert indexReader.leaves().size() > 1;
    long startTimeNS = System.nanoTime();

    final AtomicOrdinalsFieldData[] atomicFD = new AtomicOrdinalsFieldData[indexReader.leaves().size()];
    final RandomAccessOrds[] subs = new RandomAccessOrds[indexReader.leaves().size()];
    for (int i = 0; i < indexReader.leaves().size(); ++i) {
        atomicFD[i] = indexFieldData.load(indexReader.leaves().get(i));
        subs[i] = atomicFD[i].getOrdinalsValues();
    }
    final OrdinalMap ordinalMap = OrdinalMap.build(null, subs, PackedInts.DEFAULT);
    final long memorySizeInBytes = ordinalMap.ramBytesUsed();
    breakerService.getBreaker(CircuitBreaker.FIELDDATA).addWithoutBreaking(memorySizeInBytes);

    if (logger.isDebugEnabled()) {
        logger.debug("Global-ordinals[{}][{}] took {} ms", indexFieldData.getFieldNames().fullName(),
                ordinalMap.getValueCount(), TimeValue.nsecToMSec(System.nanoTime() - startTimeNS));
    }
    return new InternalGlobalOrdinalsIndexFieldData(indexFieldData.index(), settings,
            indexFieldData.getFieldNames(), indexFieldData.getFieldDataType(), atomicFD, ordinalMap,
            memorySizeInBytes);
}