Skip to content

Commit

Permalink
Don't print synthetic source in mapping for bwc tests (elastic#100572)
Browse files Browse the repository at this point in the history
* Don't print synthetic source in mapping for bwc tests

* Move comment.
  • Loading branch information
kkrik-es authored Oct 10, 2023
1 parent e351c68 commit 9322ab9
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -101,20 +101,7 @@ public static class Builder extends MetadataFieldMapper.Builder {
(previous, current, conflicts) -> (previous.value() == current.value()) || (previous.value() && current.value() == false)
);

/*
* The default mode for TimeSeries is left empty on purpose, so that mapping printings include the synthetic
* source mode.
*/
private final Parameter<Mode> 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)
.setSerializerCheck((includeDefaults, isConfigured, value) -> value != null); // don't emit if `enabled` is configured
private final Parameter<Mode> mode;
private final Parameter<List<String>> includes = Parameter.stringArrayParam(
"includes",
false,
Expand All @@ -128,9 +115,22 @@ public static class Builder extends MetadataFieldMapper.Builder {

private final IndexMode indexMode;

public Builder(IndexMode indexMode) {
public Builder(IndexMode indexMode, IndexVersion indexVersion) {
super(Defaults.NAME);
this.indexMode = indexMode;
this.mode = new Parameter<>(
"mode",
true,
// The default mode for TimeSeries is left empty on purpose, so that mapping printings include the synthetic source mode.
() -> getIndexMode() == IndexMode.TIME_SERIES && indexVersion.between(IndexVersion.V_8_7_0, IndexVersion.V_8_10_0)
? Mode.SYNTHETIC
: 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)
.setSerializerCheck((includeDefaults, isConfigured, value) -> value != null); // don't emit if `enabled` is configured
}

public Builder setSynthetic() {
Expand Down Expand Up @@ -188,7 +188,7 @@ private IndexMode getIndexMode() {
c -> c.getIndexSettings().getMode() == IndexMode.TIME_SERIES
? c.getIndexSettings().getIndexVersionCreated().onOrAfter(IndexVersion.V_8_7_0) ? TSDB_DEFAULT : TSDB_LEGACY_DEFAULT
: DEFAULT,
c -> new Builder(c.getIndexSettings().getMode())
c -> new Builder(c.getIndexSettings().getMode(), c.getIndexSettings().getIndexVersionCreated())
);

static final class SourceFieldType extends MappedFieldType {
Expand Down Expand Up @@ -313,7 +313,7 @@ protected String contentType() {

@Override
public FieldMapper.Builder getMergeBuilder() {
return new Builder(indexMode).init(this);
return new Builder(indexMode, IndexVersion.current()).init(this);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import org.elasticsearch.common.bytes.BytesArray;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.index.IndexMode;
import org.elasticsearch.index.IndexVersion;
import org.elasticsearch.xcontent.XContentBuilder;
import org.elasticsearch.xcontent.XContentFactory;
import org.elasticsearch.xcontent.XContentParser;
Expand Down Expand Up @@ -238,4 +240,10 @@ public void testSyntheticSourceInTimeSeries() throws IOException {
assertTrue(mapper.sourceMapper().isSynthetic());
assertEquals("{\"_source\":{\"mode\":\"synthetic\"}}", mapper.sourceMapper().toString());
}

public void testSyntheticSourceInTimeSeriesBwc() throws IOException {
SourceFieldMapper sourceMapper = new SourceFieldMapper.Builder(IndexMode.TIME_SERIES, IndexVersion.V_8_8_0).build();
assertTrue(sourceMapper.isSynthetic());
assertEquals("{\"_source\":{\"mode\":\"synthetic\"}}", sourceMapper.toString());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,7 @@ public void testSearchRequestRuntimeFieldsAndMultifieldDetection() {

public void testSyntheticSourceSearchLookup() throws IOException {
// Build a mapping using synthetic source
SourceFieldMapper sourceMapper = new SourceFieldMapper.Builder(null).setSynthetic().build();
SourceFieldMapper sourceMapper = new SourceFieldMapper.Builder(null, IndexVersion.current()).setSynthetic().build();
RootObjectMapper root = new RootObjectMapper.Builder("_doc", Explicit.IMPLICIT_TRUE).add(
new KeywordFieldMapper.Builder("cat", IndexVersion.current()).ignoreAbove(100)
).build(MapperBuilderContext.root(true, false));
Expand Down

0 comments on commit 9322ab9

Please sign in to comment.