private IResponse SetAnalyzers(ElasticClient client) { // close index for settings update var closeResult = client.CloseIndex(IndexName); if (!closeResult.Acknowledged) return closeResult; var request = new UpdateSettingsRequest(); request.Index = IndexName; request.Analysis = new AnalysisSettings(); request.Analysis.Analyzers.Add("cnanalyzer", new SmartCnAnalyzer()); request.Analysis.Analyzers.Add("jpanalyzer", new KuromojiAnalyzer()); var updateResult = client.UpdateSettings(request); if (!updateResult.Acknowledged) return updateResult; // reopen index var openresult = client.OpenIndex(IndexName); if (!openresult.Acknowledged) return openresult; var newSettings = client.GetIndexSettings(s => s.Index(IndexName)); return newSettings; }
private static void CreateIndex(string name, ElasticClient client) { if (client.IndexExists(x => x.Index(name)).Exists) { Log.Logger.Information("Delete index {indexName}", name); client.DeleteIndex(x => x.Index(name)); } Log.Logger.Information("Create index {indexName}", name); client.CreateIndex(name, c => c .NumberOfReplicas(0) .NumberOfShards(1) .AddMapping<Book>(m => m.MapFromAttributes()) .AddMapping<CD>(m => m.MapFromAttributes())); Log.Logger.Information("Index {indexName} created", name); Log.Logger.Information("Closing index {indexName}", name); Thread.Sleep(30000); var closeRes = client.CloseIndex(x => x.Index(name)); if (!closeRes.Acknowledged) Log.Logger.Error("Could not close index: {message}",closeRes.ServerError.Error); Log.Logger.Information("Add analyzer to index {indexName}", name); var res = client.Raw.IndicesPutSettings(name, File.ReadAllText("Analyzer.json")); if (!res.Success) Log.Logger.Error("Could not create analyzer: {error}", res.OriginalException.ToString()); Log.Logger.Information("Open index {indexName}", name); client.OpenIndex(x => x.Index(name)); RandomBooks(1000, name, client); RandomCDs(1000, name, client); }