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
Modifier and TypeClassDescriptionstatic class
static class
A field data implementation that gives access to the values associated with a particular JSON key.static final class
A 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 class
A field type that represents all 'root' values.Nested classes/interfaces inherited from class org.elasticsearch.index.mapper.FieldMapper
FieldMapper.Conflicts, FieldMapper.CopyTo, FieldMapper.MergeValidator<T>, FieldMapper.MultiFields, FieldMapper.Parameter<T>, FieldMapper.Serializer<T>, FieldMapper.SerializerCheck<T>, FieldMapper.TypeParser
Nested classes/interfaces inherited from interface org.elasticsearch.xcontent.ToXContent
ToXContent.DelegatingMapParams, ToXContent.MapParams, ToXContent.Params
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
static final FieldMapper.TypeParser
static final String
Fields 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
Returns aFieldMapper.Builder
to be used for merging and serialization Implement as follows:return new MyBuilder(simpleName()).init(this);
protected void
parseCreateField
(DocumentParserContext context) Parse the field value and populate the fields onDocumentParserContext.doc()
.protected boolean
Whether this mapper can handle an object value during document parsing.Create aSourceLoader.SyntheticFieldLoader
to populate synthetic source.Methods inherited from class org.elasticsearch.index.mapper.FieldMapper
checkIncomingMergeType, copyTo, doValidate, doXContentBody, executeScript, getTotalFieldsCount, hasScript, ignoreMalformed, indexScriptValues, iterator, merge, multiFields, multiFieldsIterator, name, notInMultiFields, parse, parsesArrayValue, sourcePathUsedBy, toXContent, typeName, validate
Methods inherited from class org.elasticsearch.index.mapper.Mapper
freezeAndDeduplicateFieldType, internFieldName, simpleName, 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
-
CONTENT_TYPE
- See Also:
-
KEYED_FIELD_SUFFIX
- See Also:
-
TIME_SERIES_DIMENSIONS_ARRAY_PARAM
- See Also:
-
PARSER
-
-
Method Details
-
indexAnalyzers
- Overrides:
indexAnalyzers
in classFieldMapper
-
contentType
- Specified by:
contentType
in classFieldMapper
-
fieldType
- Overrides:
fieldType
in classFieldMapper
-
supportsParsingObject
protected boolean supportsParsingObject()Description copied from class:FieldMapper
Whether 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:
supportsParsingObject
in classFieldMapper
-
parseCreateField
Description copied from class:FieldMapper
Parse 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:
parseCreateField
in classFieldMapper
- Throws:
IOException
-
getMergeBuilder
Description copied from class:FieldMapper
Returns aFieldMapper.Builder
to be used for merging and serialization Implement as follows:return new MyBuilder(simpleName()).init(this);
- Specified by:
getMergeBuilder
in classFieldMapper
-
syntheticFieldLoader
Description copied from class:Mapper
Create aSourceLoader.SyntheticFieldLoader
to populate synthetic source.- Overrides:
syntheticFieldLoader
in classMapper
-