public static async Task CreateSearchIndexerAsync( string serviceAdminKey, string searchSvcUrl, string cognitiveServiceKey, string indexName, string jsonFieldsFilePath, string blobConnectionString, string blobContainerName ) { // Its a temporary arrangment. This function is not complete IEnumerable <SearchField> fields = SearchHelper.LoadFieldsFromJSonFile(jsonFieldsFilePath); // create index var searchIndex = await Search.Search.CreateSearchIndexAsync(serviceAdminKey, searchSvcUrl, indexName, fields.ToList()); // get indexer client var indexerClient = Search.Search.GetSearchIndexerClient(serviceAdminKey, searchSvcUrl); // create azure blob data source var dataSource = await Search.Search.CreateOrUpdateAzureBlobDataSourceAsync(indexerClient, blobConnectionString, indexName, blobContainerName); // create indexer // create skill set with minimal skills List <SearchIndexerSkill> skills = new List <SearchIndexerSkill>(); skills.Add(Skills.CreateEntityRecognitionSkill()); skills.Add(Skills.CreateLanguageDetectionSkill()); var skillSet = await Search.Search.CreateOrUpdateSkillSetAsync(indexerClient, indexName + "-skillset", skills, cognitiveServiceKey); var indexer = await Search.Search.CreateIndexerAsync(indexerClient, dataSource, skillSet, searchIndex); // wait for some time to have indexer run and load documents Thread.Sleep(TimeSpan.FromSeconds(20)); await Search.Search.CheckIndexerOverallStatusAsync(indexerClient, indexer); }