Module org.elasticsearch.server
Class FlattenedFieldMapper
java.lang.Object
org.elasticsearch.index.mapper.Mapper
org.elasticsearch.index.mapper.FieldMapper
org.elasticsearch.index.mapper.flattened.FlattenedFieldMapper
- All Implemented Interfaces:
Iterable<Mapper>,ToXContent,ToXContentFragment
A field mapper that accepts a JSON object and flattens it into a single field. This data type
can be a useful alternative to an 'object' mapping when the object has a large, unknown set
of keys.
Currently the mapper extracts all leaf values of the JSON object, converts them to their text
representations, and indexes each one as a keyword. It creates both a 'keyed' version of the token
to allow searches on particular key-value pairs, as well as a 'root' token without the key
As an example, given a flattened field called 'field' and the following input
{
"field": {
"key1": "some value",
"key2": {
"key3": true
}
}
}
the mapper will produce untokenized string fields with the name "field" and values
"some value" and "true", as well as string fields called "field._keyed" with values
"key1\0some value" and "key2.key3\0true". Note that \0 is used as a reserved separator
character (see
FlattenedFieldParser.SEPARATOR).-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classA field data implementation that gives access to the values associated with a particular JSON key.static final classA field type that represents the values under a particular JSON key, used when searching under a specific key as in 'my_flattened.key: some_value'.static final classA field type that represents all 'root' values.Nested classes/interfaces inherited from class org.elasticsearch.index.mapper.FieldMapper
FieldMapper.BuilderParams, FieldMapper.Conflicts, FieldMapper.CopyTo, FieldMapper.DimensionBuilder, FieldMapper.MergeValidator<T>, FieldMapper.MultiFields, FieldMapper.Parameter<T>, FieldMapper.Serializer<T>, FieldMapper.SerializerCheck<T>, FieldMapper.SyntheticSourceMode, FieldMapper.SyntheticSourceSupport, FieldMapper.TypeParserNested classes/interfaces inherited from class org.elasticsearch.index.mapper.Mapper
Mapper.SourceKeepModeNested classes/interfaces inherited from interface org.elasticsearch.xcontent.ToXContent
ToXContent.DelegatingMapParams, ToXContent.MapParams, ToXContent.Params -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final FieldMapper.TypeParserstatic final StringFields inherited from class org.elasticsearch.index.mapper.FieldMapper
builderParams, COERCE_SETTING, deprecationLogger, IGNORE_MALFORMED_SETTING, mappedFieldTypeFields inherited from class org.elasticsearch.index.mapper.Mapper
SYNTHETIC_SOURCE_KEEP_INDEX_SETTING, SYNTHETIC_SOURCE_KEEP_PARAMFields inherited from interface org.elasticsearch.xcontent.ToXContent
EMPTY, EMPTY_PARAMS -
Method Summary
Modifier and TypeMethodDescriptionprotected StringReturns aFieldMapper.Builderto be used for merging and serialization Implement as follows:return new MyBuilder(simpleName()).init(this);intprotected voidparseCreateField(DocumentParserContext context) Parse the field value and populate the fields onDocumentParserContext.doc().protected booleanWhether this mapper can handle an object value during document parsing.protected FieldMapper.SyntheticSourceSupportReturns implementation of synthetic source support for the mapper.Methods inherited from class org.elasticsearch.index.mapper.FieldMapper
checkIncomingMergeType, copyTo, createTypeParserWithLegacySupport, doParseMultiFields, doValidate, doXContentBody, executeScript, fullPath, getTotalFieldsCount, hasScript, ignoreMalformed, indexScriptValues, iterator, merge, multiFields, multiFieldsIterator, notFromDynamicTemplates, notInMultiFields, parse, parsesArrayValue, sourceKeepMode, sourcePathUsedBy, syntheticFieldLoader, syntheticVectorsLoader, throwIndexingWithScriptParam, toXContent, typeName, validateMethods inherited from class org.elasticsearch.index.mapper.Mapper
freezeAndDeduplicateFieldType, getOffsetFieldName, internFieldName, leafName, supportStoringArrayOffsets, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface org.elasticsearch.xcontent.ToXContentFragment
isFragment
-
Field Details
-
CONTENT_TYPE
- See Also:
-
KEYED_FIELD_SUFFIX
- See Also:
-
KEYED_IGNORED_VALUES_FIELD_SUFFIX
- See Also:
-
TIME_SERIES_DIMENSIONS_ARRAY_PARAM
- See Also:
-
PARSER
-
-
Method Details
-
indexAnalyzers
- Overrides:
indexAnalyzersin classFieldMapper
-
contentType
- Specified by:
contentTypein classFieldMapper
-
ignoreAbove
public int ignoreAbove() -
fieldType
- Overrides:
fieldTypein classFieldMapper
-
supportsParsingObject
protected boolean supportsParsingObject()Description copied from class:FieldMapperWhether this mapper can handle an object value during document parsing. When the subobjects property is set to false, and we encounter an object while parsing we need a way to understand if its fieldMapper is able to parse an object. If that's the case we can provide the entire object to the FieldMapper otherwise its name becomes the part of the dotted field name of each internal value.- Overrides:
supportsParsingObjectin classFieldMapper
-
parseCreateField
Description copied from class:FieldMapperParse the field value and populate the fields onDocumentParserContext.doc(). Implementations of this method should ensure that on failing to parse parser.currentToken() must be the current failing token- Specified by:
parseCreateFieldin classFieldMapper- Throws:
IOException
-
getMergeBuilder
Description copied from class:FieldMapperReturns aFieldMapper.Builderto be used for merging and serialization Implement as follows:return new MyBuilder(simpleName()).init(this);- Specified by:
getMergeBuilderin classFieldMapper
-
syntheticSourceSupport
Description copied from class:FieldMapperReturns implementation of synthetic source support for the mapper.
By default (meaningFieldMapper.SyntheticSourceSupport.Fallback), an exact full copy of parsed field value is stored separately and used for synthetic source.Field mappers must override this method if they provide a more efficient field-specific implementation of synthetic source.
- Overrides:
syntheticSourceSupportin classFieldMapper- Returns:
FieldMapper.SyntheticSourceMode
-