diff --git a/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/index.test.ts b/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/index.test.ts index cfab00f92e280..5c165c46b3a32 100644 --- a/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/index.test.ts +++ b/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/index.test.ts @@ -76,6 +76,7 @@ const createMockEsClient = () => { template: { mappings: {} }, }), putMapping: jest.fn().mockResolvedValue({}), + putSettings: jest.fn().mockResolvedValue({}), }, } as unknown as jest.Mocked; return client; @@ -162,6 +163,24 @@ describe('StorageIndexAdapter - transport options forwarding', () => { ); }); + it('includes settings in the index template', async () => { + const adapter = new StorageIndexAdapter(esClient, loggerMock, storageSettings); + const client = adapter.getClient(); + + await client.index({ id: 'doc1', document: { foo: 'bar' } }); + + expect(esClient.indices.putIndexTemplate).toHaveBeenCalledWith( + expect.objectContaining({ + template: expect.objectContaining({ + settings: expect.objectContaining({ + auto_expand_replicas: '0-1', + number_of_shards: 1, + }), + }), + }) + ); + }); + it('works without transport options (backward compatible)', async () => { const adapter = new StorageIndexAdapter(esClient, loggerMock, storageSettings); const client = adapter.getClient(); diff --git a/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/index.ts b/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/index.ts index 9120db2af14e1..cea30ade226bd 100644 --- a/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/index.ts +++ b/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/index.ts @@ -160,6 +160,10 @@ export class StorageIndexAdapter< const version = getSchemaVersion(this.storage); const template: IndicesPutIndexTemplateIndexTemplateMapping = { + settings: { + auto_expand_replicas: '0-1', + number_of_shards: 1, + }, mappings: { _meta: { version, @@ -319,11 +323,13 @@ export class StorageIndexAdapter< if (!writeIndex) { this.logger.debug(`Creating index`); await this.createIndex(); - } else if (writeIndex?.state.mappings?._meta?.version !== expectedSchemaVersion) { - this.logger.debug(`Updating mappings of existing index due to schema version mismatch`); - await this.updateMappingsOfExistingIndex({ - name: writeIndex.name, - }); + } else { + if (writeIndex.state.mappings?._meta?.version !== expectedSchemaVersion) { + this.logger.debug(`Updating mappings of existing index due to schema version mismatch`); + await this.updateMappingsOfExistingIndex({ + name: writeIndex.name, + }); + } } return await cb(); diff --git a/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/integration_tests/index.test.ts b/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/integration_tests/index.test.ts index f8b0bb5f3796d..4768c1962bb1d 100644 --- a/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/integration_tests/index.test.ts +++ b/src/platform/packages/shared/kbn-storage-adapter/src/index_adapter/integration_tests/index.test.ts @@ -626,6 +626,10 @@ describe('StorageIndexAdapter', () => { is_write_index: true, }, }); + + expect(getIndexResponse[writeIndexName].settings?.index?.auto_expand_replicas).toEqual('0-1'); + + expect(getIndexResponse[writeIndexName].settings?.index?.number_of_shards).toEqual('1'); } async function verifyClean() {