Module org.elasticsearch.server
Package org.elasticsearch.index.mapper
Class IgnoredSourceFieldMapper
java.lang.Object
org.elasticsearch.index.mapper.Mapper
org.elasticsearch.index.mapper.FieldMapper
org.elasticsearch.index.mapper.MetadataFieldMapper
org.elasticsearch.index.mapper.IgnoredSourceFieldMapper
- All Implemented Interfaces:
Iterable<Mapper>
,ToXContent
,ToXContentFragment
Mapper for the
_ignored_source
field.
A field mapper that records fields that have been ignored or otherwise need storing their source, along with their values.
It's intended for use in indexes with synthetic source to reconstruct the latter, taking into account fields that got ignored or
transformed during indexing. Entries get stored in lexicographical order by field name.
This overlaps with IgnoredFieldMapper
that tracks just the ignored field names. It's worth evaluating
if we can replace it for all use cases to avoid duplication, assuming that the storage tradeoff is favorable.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final record
static final record
Nested classes/interfaces inherited from class org.elasticsearch.index.mapper.MetadataFieldMapper
MetadataFieldMapper.Builder, MetadataFieldMapper.ConfigurableTypeParser, MetadataFieldMapper.FixedTypeParser, MetadataFieldMapper.TypeParser
Nested classes/interfaces inherited from class org.elasticsearch.index.mapper.FieldMapper
FieldMapper.Conflicts, FieldMapper.CopyTo, FieldMapper.DimensionBuilder, FieldMapper.MergeValidator<T>, FieldMapper.MultiFields, FieldMapper.Parameter<T>, FieldMapper.Serializer<T>, FieldMapper.SerializerCheck<T>, FieldMapper.SyntheticSourceMode
Nested classes/interfaces inherited from interface org.elasticsearch.xcontent.ToXContent
ToXContent.DelegatingMapParams, ToXContent.MapParams, ToXContent.Params
-
Field Summary
FieldsFields inherited from class org.elasticsearch.index.mapper.FieldMapper
COERCE_SETTING, copyTo, deprecationLogger, hasScript, IGNORE_MALFORMED_SETTING, mappedFieldType, multiFields, onScriptError
Fields inherited from interface org.elasticsearch.xcontent.ToXContent
EMPTY, EMPTY_PARAMS
-
Method Summary
Modifier and TypeMethodDescriptionprotected String
decodeAsMap
(byte[] value) Parses the passed byte array as a NameValue and converts its decoded value to a map of maps that corresponds to the field-value subtree.static byte[]
encodeFromMap
(IgnoredSourceFieldMapper.MappedNameValue mappedNameValue, Map<String, Object> map) Clones the passed NameValue, using the passed map to produce its value.ensureLoaded
(Set<String> fieldsToLoadForSyntheticSource, IndexSettings indexSettings) void
postParse
(DocumentParserContext context) Called afterFieldMapper.parse(DocumentParserContext)
on theRootObjectMapper
.Mappers override this method with native synthetic source support.Methods inherited from class org.elasticsearch.index.mapper.MetadataFieldMapper
getMergeBuilder, parseCreateField, preParse, syntheticSourceMode, toXContent, updateableBoolParam
Methods inherited from class org.elasticsearch.index.mapper.FieldMapper
checkIncomingMergeType, copyTo, doValidate, doXContentBody, executeScript, fieldType, fullPath, getTotalFieldsCount, hasScript, ignoreMalformed, indexAnalyzers, indexScriptValues, iterator, merge, multiFields, multiFieldsIterator, notFromDynamicTemplates, notInMultiFields, parse, parsesArrayValue, sourcePathUsedBy, supportsParsingObject, typeName, validate
Methods inherited from class org.elasticsearch.index.mapper.Mapper
freezeAndDeduplicateFieldType, internFieldName, leafName, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
Methods inherited from interface org.elasticsearch.xcontent.ToXContentFragment
isFragment
-
Field Details
-
NAME
- See Also:
-
PARSER
-
SKIP_IGNORED_SOURCE_WRITE_SETTING
-
SKIP_IGNORED_SOURCE_READ_SETTING
-
-
Method Details
-
contentType
- Specified by:
contentType
in classFieldMapper
-
postParse
Description copied from class:MetadataFieldMapper
Called afterFieldMapper.parse(DocumentParserContext)
on theRootObjectMapper
.- Overrides:
postParse
in classMetadataFieldMapper
-
ensureLoaded
public static Set<String> ensureLoaded(Set<String> fieldsToLoadForSyntheticSource, IndexSettings indexSettings) -
decodeAsMap
Parses the passed byte array as a NameValue and converts its decoded value to a map of maps that corresponds to the field-value subtree. There is only a single pair at the top level, with the key corresponding to the field name. If the field contains a single value, the map contains a single key-value pair. Otherwise, the value of the first pair will be another map etc.- Parameters:
value
- encoded NameValue- Returns:
- MappedNameValue with the parsed NameValue, the XContentType to use for serializing its contents and the field-value map.
- Throws:
IOException
-
encodeFromMap
public static byte[] encodeFromMap(IgnoredSourceFieldMapper.MappedNameValue mappedNameValue, Map<String, Object> map) throws IOExceptionClones the passed NameValue, using the passed map to produce its value.- Parameters:
mappedNameValue
- containing the NameValue to clonemap
- containing a simple field-value pair, or a deeper field-value subtree for objects and arrays with fields- Returns:
- a byte array containing the encoding form of the cloned NameValue
- Throws:
IOException
-
syntheticFieldLoader
Description copied from class:FieldMapper
Mappers override this method with native synthetic source support. If mapper does not support synthetic source, it is generated using generic implementation inDocumentParser.parseObjectOrField(org.elasticsearch.index.mapper.DocumentParserContext, org.elasticsearch.index.mapper.Mapper)
andObjectMapper.syntheticFieldLoader()
.- Specified by:
syntheticFieldLoader
in classMetadataFieldMapper
- Returns:
- implementation of
SourceLoader.SyntheticFieldLoader
-