support dotted notation in elasticsearch settings and mappings (#144570)

(cherry picked from commit 4de8993fe96824ae125622bff264a4b15b42516e)
This commit is contained in:
Mark Hopkin 2022-11-04 09:39:26 +00:00 committed by GitHub
parent a7923d12d1
commit 9e6ee2a58c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 9 deletions

View file

@ -54,6 +54,9 @@ describe('parseDefaultIngestPipeline', () => {
});
describe('parseDataStreamElasticsearchEntry', () => {
it('Should handle undefined elasticsearch', () => {
expect(parseDataStreamElasticsearchEntry()).toEqual({});
});
it('Should handle empty elasticsearch', () => {
expect(parseDataStreamElasticsearchEntry({})).toEqual({});
});
@ -108,4 +111,15 @@ describe('parseDataStreamElasticsearchEntry', () => {
},
});
});
it('Should handle dotted values for mappings and settings', () => {
expect(
parseDataStreamElasticsearchEntry({
'index_template.mappings': { dynamic: false },
'index_template.settings': { 'index.lifecycle.name': 'reference' },
})
).toEqual({
'index_template.mappings': { dynamic: false },
'index_template.settings': { 'index.lifecycle.name': 'reference' },
});
});
});

View file

@ -503,7 +503,7 @@ export function parseAndVerifyInputs(manifestInputs: any, location: string): Reg
}
export function parseDataStreamElasticsearchEntry(
elasticsearch: Record<string, any>,
elasticsearch?: Record<string, any>,
ingestPipeline?: string
) {
const parsedElasticsearchEntry: Record<string, any> = {};
@ -520,16 +520,18 @@ export function parseDataStreamElasticsearchEntry(
parsedElasticsearchEntry.source_mode = elasticsearch.source_mode;
}
if (elasticsearch?.index_template?.mappings) {
parsedElasticsearchEntry['index_template.mappings'] = expandDottedEntries(
elasticsearch.index_template.mappings
);
const indexTemplateMappings =
elasticsearch?.index_template?.mappings || elasticsearch?.['index_template.mappings'];
if (indexTemplateMappings) {
parsedElasticsearchEntry['index_template.mappings'] =
expandDottedEntries(indexTemplateMappings);
}
if (elasticsearch?.index_template?.settings) {
parsedElasticsearchEntry['index_template.settings'] = expandDottedEntries(
elasticsearch.index_template.settings
);
const indexTemplateSettings =
elasticsearch?.index_template?.settings || elasticsearch?.['index_template.settings'];
if (indexTemplateSettings) {
parsedElasticsearchEntry['index_template.settings'] =
expandDottedEntries(indexTemplateSettings);
}
return parsedElasticsearchEntry;