Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,10 @@ public boolean isNoOpUpdate(CompressedXContent update) {
return mapping.toCompressedXContent().equals(existing.mappingSource());
}

public MappingBuilder parseMappings(CompressedXContent mappingSource) {
return mappingParser.parseToBuilder(SINGLE_MAPPING_NAME, MergeReason.MAPPING_UPDATE, MappingParser.convertToMap(mappingSource));
}

private DocumentMapper doMerge(String type, MergeReason reason, Map<String, Object> mappingSourceAsMap) {
assert reason != MergeReason.MAPPING_AUTO_UPDATE_PREFLIGHT;
MappingBuilder incomingBuilder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ public RootObjectMapper.Builder rootBuilder() {
return rootBuilder;
}

public MetadataFieldMapper.Builder metadataBuilder(String name) {
return metadataBuilders.get(name);
}

/**
* Merges another {@link MappingBuilder} into this one, mutating this builder in place.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,10 @@ Builder newEmptyBuilder() {
return builder;
}

public List<Mapper.Builder> getChildBuilders() {
return mappersBuilders;
}

private static Builder findObjectBuilder(String fullName, DocumentParserContext context) {
// does the object mapper already exist? if so, use that
ObjectMapper objectMapper = context.mappingLookup().objectMappers().get(fullName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,14 @@ protected void registerParameters(ParameterChecker checker) throws IOException {
// There aren't any parameters
}

@Override
protected Settings getIndexSettings() {
return Settings.builder()
.put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES.name())
.put(IndexMetadata.INDEX_ROUTING_PATH.getKey(), "foo")
.build();
}

@Override
protected IndexVersion getVersion() {
return IndexVersionUtils.randomVersionBetween(
Expand Down Expand Up @@ -113,10 +121,10 @@ public void testEnabledInTimeSeriesMode() throws Exception {
}

public void testDisabledInStandardMode() throws Exception {
DocumentMapper docMapper = createMapperService(
getIndexSettingsBuilder().put(IndexSettings.MODE.getKey(), IndexMode.STANDARD.name()).build(),
mapping(b -> {})
).documentMapper();
Settings.Builder builder = getIndexSettingsBuilder();
builder.put(IndexSettings.MODE.getKey(), IndexMode.STANDARD.name());
builder.remove(IndexMetadata.INDEX_ROUTING_PATH.getKey());
DocumentMapper docMapper = createMapperService(builder.build(), mapping(b -> {})).documentMapper();
assertThat(docMapper.metadataMapper(TimeSeriesIdFieldMapper.class), is(nullValue()));

ParsedDocument doc = docMapper.parse(source("id", b -> b.field("field", "value"), null));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,14 @@ protected void registerParameters(ParameterChecker checker) throws IOException {
// There aren't any parameters
}

@Override
protected Settings getIndexSettings() {
return Settings.builder()
.put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES.name())
.put(IndexMetadata.INDEX_ROUTING_PATH.getKey(), "foo")
.build();
}

private DocumentMapper createMapper(XContentBuilder mappings) throws IOException {
return createMapper(mappings, null);
}
Expand Down Expand Up @@ -115,10 +123,10 @@ public void testRetrievedFromIdInTimeSeriesMode() throws Exception {
}

public void testDisabledInStandardMode() throws Exception {
DocumentMapper docMapper = createMapperService(
getIndexSettingsBuilder().put(IndexSettings.MODE.getKey(), IndexMode.STANDARD.name()).build(),
mapping(b -> {})
).documentMapper();
Settings.Builder builder = getIndexSettingsBuilder();
builder.put(IndexSettings.MODE.getKey(), IndexMode.STANDARD.name());
builder.remove(IndexMetadata.INDEX_ROUTING_PATH.getKey());
DocumentMapper docMapper = createMapperService(builder.build(), mapping(b -> {})).documentMapper();
assertThat(docMapper.metadataMapper(TimeSeriesRoutingHashFieldMapper.class), is(nullValue()));

ParsedDocument doc = docMapper.parse(source("id", b -> b.field("field", "value"), null));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,12 @@ protected final DocumentMapper createDocumentMapper(String mappings) throws IOEx
return mapperService.documentMapper();
}

public final MappingBuilder parseMappings(XContentBuilder mappings) throws IOException {
try (MapperService mapperService = createMapperService("{\"_doc\":{}}")) {
return mapperService.parseMappings(new CompressedXContent(BytesReference.bytes(mappings)));
}
}

public final MapperService createMapperService(XContentBuilder mappings) throws IOException {
return createMapperService(getVersion(), mappings);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -802,13 +802,21 @@ public void ensureAllParametersAreCovered(FieldMapper.Builder builder) {

protected abstract void registerParameters(ParameterChecker checker) throws IOException;

private static FieldMapper.Builder findChildBuilder(String name, MappingBuilder mappings) {
for (Mapper.Builder child : mappings.rootBuilder().getChildBuilders()) {
if (name.equals(child.leafName()) && child instanceof FieldMapper.Builder mb) {
return mb;
}
}
return null;
}

public void testAllParametersAreChecked() throws IOException {
ParameterChecker checker = new ParameterChecker();
registerParameters(checker);

MapperService mapperService = createMapperService(fieldMapping(this::minimalMapping));
FieldMapper mapper = (FieldMapper) mapperService.documentMapper().mappers().getMapper("field");
FieldMapper.Builder builder = mapper.getMergeBuilder();
MappingBuilder rootBuilder = parseMappings(fieldMapping(this::minimalMapping));
FieldMapper.Builder builder = findChildBuilder("field", rootBuilder);
assumeTrue("mapper does not provide a merge builder", builder != null);
checker.ensureAllParametersAreCovered(builder);
assertParseMinimalWarnings();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,8 @@ public void testAllParametersAreChecked() throws IOException {
assertThat(checker.checkedParameters, hasSize(0));
}

MapperService mapperService = createMapperService(topMapping(b -> {}));
MetadataFieldMapper mapper = mapperService.documentMapper().mapping().getMetadataMapperByName(fieldName());
assumeTrue("mapper not present in default mapping", mapper != null);
MetadataFieldMapper.Builder builder = (MetadataFieldMapper.Builder) mapper.getMergeBuilder();
MappingBuilder mappings = parseMappings(topMapping(b -> {}));
MetadataFieldMapper.Builder builder = mappings.metadataBuilder(fieldName());
checker.ensureAllParametersAreCovered(builder);
}

Expand Down
Loading