Skip to content

Commit

Permalink
Don't print synthetic source in mapping for bwc tests #2
Browse files Browse the repository at this point in the history
  • Loading branch information
kkrik-es committed Oct 10, 2023
1 parent 89641ee commit 44e8156
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -114,17 +114,17 @@ public static class Builder extends MetadataFieldMapper.Builder {
);

private final IndexMode indexMode;
private final boolean setDefaultSytheticMode;

public Builder(IndexMode indexMode, IndexVersion indexVersion) {
public Builder(IndexMode indexMode, boolean setDefaultSytheticMode) {
super(Defaults.NAME);
this.indexMode = indexMode;
this.setDefaultSytheticMode = setDefaultSytheticMode;
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,
() -> getIndexMode() == IndexMode.TIME_SERIES && setDefaultSytheticMode ? 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)),
Expand Down Expand Up @@ -171,7 +171,8 @@ public SourceFieldMapper build() {
enabled.get(),
includes.getValue().toArray(String[]::new),
excludes.getValue().toArray(String[]::new),
indexMode
indexMode,
setDefaultSytheticMode
);
if (indexMode != null) {
indexMode.validateSourceFieldMapper(sourceFieldMapper);
Expand All @@ -188,7 +189,10 @@ 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.getIndexSettings().getIndexVersionCreated())
c -> new Builder(
c.getIndexSettings().getMode(),
c.getIndexSettings().getIndexVersionCreated().between(IndexVersion.V_8_7_0, IndexVersion.V_8_10_0)
)
);

static final class SourceFieldType extends MappedFieldType {
Expand Down Expand Up @@ -230,8 +234,25 @@ public Query termQuery(Object value, SearchExecutionContext context) {
private final SourceFilter sourceFilter;

private final IndexMode indexMode;
private final boolean setDefaultSytheticMode;

private SourceFieldMapper(
Mode mode,
Explicit<Boolean> enabled,
String[] includes,
String[] excludes,
IndexMode indexMode) {
this(mode, enabled, includes, excludes, indexMode, false);
}

private SourceFieldMapper(Mode mode, Explicit<Boolean> enabled, String[] includes, String[] excludes, IndexMode indexMode) {
private SourceFieldMapper(
Mode mode,
Explicit<Boolean> enabled,
String[] includes,
String[] excludes,
IndexMode indexMode,
boolean setDefaultSytheticMode
) {
super(new SourceFieldType((enabled.explicit() && enabled.value()) || (enabled.explicit() == false && mode != Mode.DISABLED)));
assert enabled.explicit() == false || mode == null;
this.mode = mode;
Expand All @@ -244,6 +265,7 @@ private SourceFieldMapper(Mode mode, Explicit<Boolean> enabled, String[] include
}
this.complete = stored() && sourceFilter == null;
this.indexMode = indexMode;
this.setDefaultSytheticMode = setDefaultSytheticMode;
}

private static SourceFilter buildSourceFilter(String[] includes, String[] excludes) {
Expand Down Expand Up @@ -313,7 +335,7 @@ protected String contentType() {

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

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
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 @@ -242,8 +241,8 @@ public void testSyntheticSourceInTimeSeries() throws IOException {
}

public void testSyntheticSourceInTimeSeriesBwc() throws IOException {
SourceFieldMapper sourceMapper = new SourceFieldMapper.Builder(IndexMode.TIME_SERIES, IndexVersion.V_8_8_0).build();
SourceFieldMapper sourceMapper = new SourceFieldMapper.Builder(IndexMode.TIME_SERIES, true).build();
assertTrue(sourceMapper.isSynthetic());
assertEquals("{\"_source\":{\"mode\":\"synthetic\"}}", sourceMapper.toString());
assertEquals("{}", 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, IndexVersion.current()).setSynthetic().build();
SourceFieldMapper sourceMapper = new SourceFieldMapper.Builder(null, false).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 44e8156

Please sign in to comment.