private static async Task Main() { using var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); using var connectionSettings = new ConnectionSettings(pool) .PrettyJson() .DefaultIndex(nameof(SocialMediaLists).ToLower()) .DisableDirectStreaming() .OnRequestCompleted(ElasticSearchLogHandler.Handle); var elasticClient = new ElasticClient(connectionSettings); using var dbContext = new SocialMediaListsContextFactory().CreateDbContext(null); var cancellationToken = CancellationToken.None; await UpdateDatabaseAsync(dbContext, elasticClient, cancellationToken); var seedSource = new DataSeedCollection(); await SeedDataAsync(dbContext, elasticClient, seedSource, cancellationToken); var queryTerm = GenerateQueryTermFromSample(seedSource); var filter = GenerateSearchPostRequest(queryTerm); var result = await GetPostQueryService(dbContext, elasticClient) .SearchAsync(filter, cancellationToken); PrintPostSearchResponse(queryTerm, result); }
public SampleDataSeeder(IElasticClient elasticClient, SocialMediaListsDbContext socialMediaListsDbContext, DataSeedCollection dataSeedCollection) { _elasticClient = elasticClient; _socialMediaListsDbContext = socialMediaListsDbContext; _dataSeedCollection = dataSeedCollection; }
private static async Task SeedDataAsync(SocialMediaListsDbContext dbContext, IElasticClient elasticClient, DataSeedCollection seedCollection, CancellationToken cancellationToken) { var dataSeeder = new SampleDataSeeder(elasticClient, dbContext, seedCollection); await dataSeeder.SeedAsync(cancellationToken); }
private static string GenerateQueryTermFromSample(DataSeedCollection seedSource) { char[] delimiterChars = { ' ', ',', '.', ':', '\t' }; var word = seedSource.Posts.GetSample() .Take(10) .SelectMany(x => x.Content.Split(delimiterChars)) .First(x => x.Length > 5); return(word); }
public void ConfigureSeedData(IApplicationBuilder app, IWebHostEnvironment env) { using var serviceScope = app.ApplicationServices.CreateScope(); using var dbContext = serviceScope.ServiceProvider.GetService <SocialMediaListsDbContext>(); var elasticClient = serviceScope.ServiceProvider.GetService <IElasticClient>(); var seedSource = new DataSeedCollection(); var dataSeeder = new SampleDataSeeder(elasticClient, dbContext, seedSource); dataSeeder.Seed(); }