public string AddAndIndexTestdata(ScientificCenterDbContext dbContext) { var directory = Directory.GetCurrentDirectory(); if (!dbContext.ScientificPapers.Any()) { char separator = Path.DirectorySeparatorChar; string script = File.ReadAllText($"Database{separator}InitDb.sql"); dbContext.Database.ExecuteSqlRaw(script); } else { return("Database already contains data!"); } var scientificPapers = dbContext.ScientificPapers .Include(a => a.Authors) .Include(k => k.Keywords) .Include(s => s.ScientificFields).ToList(); var indexedPapers = Search <ScientificPaperDocument>(s => s.Index(DEFAULT_INDEX)).Documents.Select(s => s.ScientificPaper).ToList(); // skip indexing of test data if it is already indexed in ES if (indexedPapers.Any(scientificPapers.Contains)) { return("Test data already indexed!"); } foreach (var sp in scientificPapers) { IndexScientitifPaper(directory, sp.PdfFileName, sp); } return("Successfully added and indexed test data!"); }
public static void Main(string[] args) { using (var dbContext = new ScientificCenterDbContext()) { //Ensure database is created dbContext.Database.EnsureCreated(); } CreateHostBuilder(args).Build().Run(); }
public ScientificCenterController(ScientificCenterDbContext dbContext) { node = new Uri("http://localhost:9200"); settings = new ConnectionSettings(node); settings.DefaultIndex(ScientificCenterESClient.DEFAULT_INDEX); client = new ScientificCenterESClient(settings); this.dbContext = dbContext; var response = client.Cluster.Health(ScientificCenterESClient.DEFAULT_INDEX); if (response.NumberOfNodes < 1) { throw new Exception("Elasticsearch is not running! \n\n" + response.DebugInformation); } client.CreateIndex(); client.PutPipeline(); }