|
|
@@ -171,15 +171,17 @@ public class SourceFieldMapper extends MetadataFieldMapper {
|
|
|
|| settings.getAsBoolean(LOSSY_PARAMETERS_ALLOWED_SETTING_NAME, true);
|
|
|
this.sourceModeIsNoop = sourceModeIsNoop;
|
|
|
this.serializeMode = serializeMode;
|
|
|
- this.mode = new Parameter<>(
|
|
|
- "mode",
|
|
|
- true,
|
|
|
- () -> null,
|
|
|
- (n, c, o) -> Mode.valueOf(o.toString().toUpperCase(Locale.ROOT)),
|
|
|
- m -> toType(m).enabled.explicit() ? null : toType(m).mode,
|
|
|
- (b, n, v) -> b.field(n, v.toString().toLowerCase(Locale.ROOT)),
|
|
|
- v -> v.toString().toLowerCase(Locale.ROOT)
|
|
|
- ).setMergeValidator((previous, current, conflicts) -> (previous == current) || current != Mode.STORED)
|
|
|
+ this.mode = new Parameter<>("mode", true, () -> null, (n, c, o) -> Mode.valueOf(o.toString().toUpperCase(Locale.ROOT)), m -> {
|
|
|
+ var sfm = toType(m);
|
|
|
+ if (sfm.enabled.explicit()) {
|
|
|
+ return null;
|
|
|
+ } else if (sfm.serializeMode) {
|
|
|
+ return sfm.mode;
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }, (b, n, v) -> b.field(n, v.toString().toLowerCase(Locale.ROOT)), v -> v.toString().toLowerCase(Locale.ROOT))
|
|
|
+ .setMergeValidator((previous, current, conflicts) -> (previous == current) || current != Mode.STORED)
|
|
|
// don't emit if `enabled` is configured
|
|
|
.setSerializerCheck((includeDefaults, isConfigured, value) -> serializeMode && value != null);
|
|
|
}
|
|
|
@@ -300,10 +302,11 @@ public class SourceFieldMapper extends MetadataFieldMapper {
|
|
|
if (indexMode == IndexMode.STANDARD && settingSourceMode == Mode.STORED) {
|
|
|
return DEFAULT;
|
|
|
}
|
|
|
+ SourceFieldMapper sourceFieldMapper;
|
|
|
if (onOrAfterDeprecateModeVersion(c.indexVersionCreated())) {
|
|
|
- return resolveStaticInstance(settingSourceMode);
|
|
|
+ sourceFieldMapper = resolveStaticInstance(settingSourceMode);
|
|
|
} else {
|
|
|
- return new SourceFieldMapper(
|
|
|
+ sourceFieldMapper = new SourceFieldMapper(
|
|
|
settingSourceMode,
|
|
|
Explicit.IMPLICIT_TRUE,
|
|
|
Strings.EMPTY_ARRAY,
|
|
|
@@ -312,6 +315,8 @@ public class SourceFieldMapper extends MetadataFieldMapper {
|
|
|
c.indexVersionCreated().onOrAfter(IndexVersions.SOURCE_MAPPER_MODE_ATTRIBUTE_NOOP)
|
|
|
);
|
|
|
}
|
|
|
+ indexMode.validateSourceFieldMapper(sourceFieldMapper);
|
|
|
+ return sourceFieldMapper;
|
|
|
},
|
|
|
c -> new Builder(
|
|
|
c.getIndexSettings().getMode(),
|