Module org.elasticsearch.server
Package org.elasticsearch.index.mapper
Class FallbackSyntheticSourceBlockLoader
java.lang.Object
org.elasticsearch.index.mapper.FallbackSyntheticSourceBlockLoader
- All Implemented Interfaces:
BlockLoader
Block loader for fields that use fallback synthetic source implementation.
Usually fields have doc_values or stored fields and block loaders use them directly. In some cases neither is available and we would fall back to (potentially synthetic) _source. However, in case of synthetic source, there is actually no need to construct the entire _source. We know that there is no doc_values and stored fields, and therefore we will be using fallback synthetic source. That is equivalent to just reading _ignored_source stored field directly and doing an in-place synthetic source just for this field.
See
Usually fields have doc_values or stored fields and block loaders use them directly. In some cases neither is available and we would fall back to (potentially synthetic) _source. However, in case of synthetic source, there is actually no need to construct the entire _source. We know that there is no doc_values and stored fields, and therefore we will be using fallback synthetic source. That is equivalent to just reading _ignored_source stored field directly and doing an in-place synthetic source just for this field.
See
IgnoredSourceFieldMapper.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceField-specific implementation that converts data stored in _ignored_source field to block loader values.static classReader for field types that don't parse arrays (arrays are always treated as multiple values) as opposed to field types that treat arrays as special cases (for example point).Nested classes/interfaces inherited from interface org.elasticsearch.index.mapper.BlockLoader
BlockLoader.AggregateMetricDoubleBuilder, BlockLoader.Block, BlockLoader.BlockFactory, BlockLoader.BooleanBuilder, BlockLoader.Builder, BlockLoader.BytesRefBuilder, BlockLoader.ColumnAtATimeReader, BlockLoader.ConditionalBlockLoader, BlockLoader.Docs, BlockLoader.DoubleBuilder, BlockLoader.ExponentialHistogramBuilder, BlockLoader.FloatBuilder, BlockLoader.IntBuilder, BlockLoader.LongBuilder, BlockLoader.LongRangeBuilder, BlockLoader.OptionalColumnAtATimeReader, BlockLoader.OptionalLengthReader, BlockLoader.RowStrideReader, BlockLoader.SingletonBytesRefBuilder, BlockLoader.SingletonDoubleBuilder, BlockLoader.SingletonIntBuilder, BlockLoader.SingletonLongBuilder, BlockLoader.SingletonOrdinalsBuilder, BlockLoader.SortedSetOrdinalsBuilder, BlockLoader.StoredFields, BlockLoader.TDigestBuilder -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedFallbackSyntheticSourceBlockLoader(FallbackSyntheticSourceBlockLoader.Reader<?> reader, String fieldName, IgnoredSourceFieldMapper.IgnoredSourceFormat ignoredSourceFormat) -
Method Summary
Modifier and TypeMethodDescriptionorg.apache.lucene.util.IOFunction<CircuitBreaker, BlockLoader.ColumnAtATimeReader> columnAtATimeReader(org.apache.lucene.index.LeafReaderContext context) Build a column-at-a-time reader.Returns the ignored source format used by this loader.org.apache.lucene.index.SortedSetDocValuesordinals(org.apache.lucene.index.LeafReaderContext context) Load ordinals for the provided context.rowStrideReader(CircuitBreaker breaker, org.apache.lucene.index.LeafReaderContext context) Build a row-by-row reader.Whatstoredfields are needed by this reader.splitIntoFieldPaths(String fieldName) booleanDoes this loader support loading bytes via callingBlockLoader.ordinals(org.apache.lucene.index.LeafReaderContext).toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.elasticsearch.index.mapper.BlockLoader
builder
-
Constructor Details
-
FallbackSyntheticSourceBlockLoader
protected FallbackSyntheticSourceBlockLoader(FallbackSyntheticSourceBlockLoader.Reader<?> reader, String fieldName, IgnoredSourceFieldMapper.IgnoredSourceFormat ignoredSourceFormat)
-
-
Method Details
-
ignoredSourceFormat
Returns the ignored source format used by this loader. -
columnAtATimeReader
public org.apache.lucene.util.IOFunction<CircuitBreaker,BlockLoader.ColumnAtATimeReader> columnAtATimeReader(org.apache.lucene.index.LeafReaderContext context) Description copied from interface:BlockLoaderBuild a column-at-a-time reader. May returnnullif the underlying storage needs to be loaded row-by-row. Callers should try this first, only falling back toBlockLoader.rowStrideReader(org.elasticsearch.common.breaker.CircuitBreaker, org.apache.lucene.index.LeafReaderContext)if this returnsnull. If this returns null thenBlockLoader.rowStrideReader(org.elasticsearch.common.breaker.CircuitBreaker, org.apache.lucene.index.LeafReaderContext)may not.- Specified by:
columnAtATimeReaderin interfaceBlockLoader
-
rowStrideReader
public BlockLoader.RowStrideReader rowStrideReader(CircuitBreaker breaker, org.apache.lucene.index.LeafReaderContext context) throws IOException Description copied from interface:BlockLoaderBuild a row-by-row reader. May returnnullif the underlying storage prefers to be loaded column-at-a-time. Callers should tryBlockLoader.columnAtATimeReader(org.apache.lucene.index.LeafReaderContext)first, only falling back to this ifBlockLoader.columnAtATimeReader(org.apache.lucene.index.LeafReaderContext)returns null. This may not return null ifBlockLoader.columnAtATimeReader(org.apache.lucene.index.LeafReaderContext)does.- Specified by:
rowStrideReaderin interfaceBlockLoader- Throws:
IOException
-
rowStrideStoredFieldSpec
Description copied from interface:BlockLoaderWhatstoredfields are needed by this reader.- Specified by:
rowStrideStoredFieldSpecin interfaceBlockLoader
-
supportsOrdinals
public boolean supportsOrdinals()Description copied from interface:BlockLoaderDoes this loader support loading bytes via callingBlockLoader.ordinals(org.apache.lucene.index.LeafReaderContext).- Specified by:
supportsOrdinalsin interfaceBlockLoader
-
ordinals
public org.apache.lucene.index.SortedSetDocValues ordinals(org.apache.lucene.index.LeafReaderContext context) throws IOException Description copied from interface:BlockLoaderLoad ordinals for the provided context.- Specified by:
ordinalsin interfaceBlockLoader- Throws:
IOException
-
toString
-
splitIntoFieldPaths
-