Example #1
0
        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);
        }
Example #2
0
 public SampleDataSeeder(IElasticClient elasticClient,
                         SocialMediaListsDbContext socialMediaListsDbContext,
                         DataSeedCollection dataSeedCollection)
 {
     _elasticClient             = elasticClient;
     _socialMediaListsDbContext = socialMediaListsDbContext;
     _dataSeedCollection        = dataSeedCollection;
 }
Example #3
0
 private static async Task SeedDataAsync(SocialMediaListsDbContext dbContext,
                                         IElasticClient elasticClient,
                                         DataSeedCollection seedCollection,
                                         CancellationToken cancellationToken)
 {
     var dataSeeder = new SampleDataSeeder(elasticClient, dbContext, seedCollection);
     await dataSeeder.SeedAsync(cancellationToken);
 }
Example #4
0
        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);
        }
Example #5
0
        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();
        }