Skip to content

Commit 7b99d34

Browse files
committed
Add a test that captures how to merge an object mapper with a passthrough object.
1 parent 1ab68ea commit 7b99d34

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,25 @@ public void testConflictingDynamicUpdate() {
344344
assertThat(e.getMessage(), equalTo("mapper [http.status_code] cannot be changed from type [keyword] to [long]"));
345345
}
346346

347+
public void testMergingWithPassThrough() {
348+
boolean isSourceSynthetic = randomBoolean();
349+
var objectMapper = new RootObjectMapper.Builder("_doc").add(
350+
new ObjectMapper.Builder("metrics").add(new KeywordFieldMapper.Builder("cpu_usage", IndexVersion.current()))
351+
).build(MapperBuilderContext.root(isSourceSynthetic, true));
352+
var passThroughMapper = new RootObjectMapper.Builder("_doc").add(
353+
new PassThroughObjectMapper.Builder("metrics").setPriority(10)
354+
.add(new KeywordFieldMapper.Builder("memory_usage", IndexVersion.current()))
355+
).build(MapperBuilderContext.root(isSourceSynthetic, true));
356+
RootObjectMapper merged = objectMapper.merge(
357+
passThroughMapper,
358+
MapperMergeContext.root(isSourceSynthetic, true, MAPPING_UPDATE, Long.MAX_VALUE)
359+
);
360+
assertThat(merged.getMapper("metrics"), instanceOf(ObjectMapper.class));
361+
ObjectMapper metrics = (ObjectMapper) merged.getMapper("metrics");
362+
assertThat(metrics.getMapper("cpu_usage"), instanceOf(KeywordFieldMapper.class));
363+
assertThat(metrics.getMapper("memory_usage"), instanceOf(KeywordFieldMapper.class));
364+
}
365+
347366
private static RootObjectMapper createRootSubobjectFalseLeafWithDots() {
348367
FieldMapper.Builder fieldBuilder = new KeywordFieldMapper.Builder("host.name", IndexVersion.current());
349368
FieldMapper fieldMapper = fieldBuilder.build(MapperBuilderContext.root(false, false));

0 commit comments

Comments
 (0)