From d72d77486ccb84f6fd455edd57fd08dfb68c3429 Mon Sep 17 00:00:00 2001 From: pgayvallet Date: Fri, 7 Feb 2020 12:45:24 +0100 Subject: [PATCH] set mapping to dynamic before calling migration endpoint --- src/es_archiver/actions/empty_kibana_index.ts | 2 +- src/es_archiver/actions/load.ts | 2 +- src/es_archiver/lib/indices/kibana_index.ts | 17 ++++++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/es_archiver/actions/empty_kibana_index.ts b/src/es_archiver/actions/empty_kibana_index.ts index 2a17d6414e2f8..d61d544deadc4 100644 --- a/src/es_archiver/actions/empty_kibana_index.ts +++ b/src/es_archiver/actions/empty_kibana_index.ts @@ -34,6 +34,6 @@ export async function emptyKibanaIndexAction({ const stats = createStats('emptyKibanaIndex', log); await deleteKibanaIndices({ client, stats, log }); - await migrateKibanaIndex({ kbnClient }); + await migrateKibanaIndex({ client, kbnClient }); return stats; } diff --git a/src/es_archiver/actions/load.ts b/src/es_archiver/actions/load.ts index 70fb0242644e2..ae7799205b299 100644 --- a/src/es_archiver/actions/load.ts +++ b/src/es_archiver/actions/load.ts @@ -106,7 +106,7 @@ export async function loadAction({ // If we affected the Kibana index, we need to ensure it's migrated... if (Object.keys(result).some(k => k.startsWith('.kibana'))) { - await migrateKibanaIndex({ kbnClient }); + await migrateKibanaIndex({ client, kbnClient }); if (kibanaPluginIds.includes('spaces')) { await createDefaultSpace({ client, index: '.kibana' }); diff --git a/src/es_archiver/lib/indices/kibana_index.ts b/src/es_archiver/lib/indices/kibana_index.ts index 3a18e9cbfa442..1867f24d6f9ed 100644 --- a/src/es_archiver/lib/indices/kibana_index.ts +++ b/src/es_archiver/lib/indices/kibana_index.ts @@ -59,7 +59,22 @@ export async function deleteKibanaIndices({ * builds up an object that implements just enough of the kbnMigrations interface * as is required by migrations. */ -export async function migrateKibanaIndex({ kbnClient }: { kbnClient: KbnClient }) { +export async function migrateKibanaIndex({ + client, + kbnClient, +}: { + client: Client; + kbnClient: KbnClient; +}) { + // we allow dynamic mappings on the index, as some interceptors are accessing documents before + // the migration is actually performed. The migrator will put the value back to `strict` after migration. + await client.indices.putMapping({ + index: '.kibana', + body: { + dynamic: true, + }, + } as any); + return await kbnClient.savedObjects.migrate(); }