public async Task <IEventIndexer <TEvent> > CreateEventIndexer <TEvent, TSearchDocument>(string indexName, Func <EventLog <TEvent>, TSearchDocument> mappingFunc)
            where TEvent : class
            where TSearchDocument : class, IHasId, new()
        {
            var mapper = new EventToSearchDocumentMapper <TEvent, TSearchDocument>(mappingFunc);

            return(await CreateEventIndexer(indexName, mapper));
        }
        public async Task <IEventIndexer <TEvent> > CreateEventIndexer <TEvent, TSearchDocument>(Index index, Func <EventLog <TEvent>, TSearchDocument> mappingFunc)
            where TEvent : class
            where TSearchDocument : class, new()
        {
            index = await GetOrCreateAzureIndex(index);

            var mapper = new EventToSearchDocumentMapper <TEvent, TSearchDocument>(mappingFunc);
            IEventIndexer <TEvent> indexer = new AzureEventIndexer <TEvent, TSearchDocument>(index, GetOrCreateIndexClient(index.Name), mapper);

            return(indexer);
        }