private static IElasticClient GetElasticClient(Uri serverUri, bool deleteExistingIndexes = false) { var settings = new ConnectionSettings(serverUri).SetDefaultIndex("_all"); settings.EnableMetrics(); settings.SetJsonSerializerSettingsModifier(s => { s.ContractResolver = new EmptyCollectionElasticContractResolver(settings); s.AddModelConverters(); }); settings.MapDefaultTypeNames(m => m.Add(typeof(PersistentEvent), "events").Add(typeof(Stack), "stacks")); settings.MapDefaultTypeIndices(m => m.Add(typeof(Stack), ElasticSearchRepository<Stack>.StacksIndexName)); settings.MapDefaultTypeIndices(m => m.Add(typeof(PersistentEvent), ElasticSearchRepository<PersistentEvent>.EventsIndexName + "-*")); settings.SetDefaultPropertyNameInferrer(p => p.ToLowerUnderscoredWords()); var client = new ElasticClient(settings); ConfigureMapping(client, deleteExistingIndexes); return client; }
public IElasticClient ConfigureElastic() { var connectionString = ConfigurationManager.ConnectionStrings["Elastic"]; if (connectionString == null) throw new ArgumentException("No elastic connection string found"); var data = connectionString.ConnectionString.Split(';'); var url = data.FirstOrDefault(x => x.StartsWith("Url", StringComparison.CurrentCultureIgnoreCase)); if (url == null) throw new ArgumentException("No URL parameter in elastic connection string"); var index = data.FirstOrDefault(x => x.StartsWith("DefaultIndex", StringComparison.CurrentCultureIgnoreCase)); if (index.IsNullOrEmpty()) throw new ArgumentException("No DefaultIndex parameter in elastic connection string"); index = index.Substring(13); var node = new Uri(url.Substring(4)); var settings = new Nest.ConnectionSettings(node); settings.SetDefaultIndex(index); settings.SetDefaultTypeNameInferrer(type => type.FullName.Replace("Demo.Application.ServiceStack.", "").Replace('.', '_')); // Disable camel case field names (need to match out POCO field names) settings.SetDefaultPropertyNameInferrer(field => field); var client = new ElasticClient(settings); if (!client.IndexExists(index).Exists) client.CreateIndex(index, i => i .Analysis(analysis => analysis .TokenFilters(f => f .Add("ngram", new Nest.NgramTokenFilter { MinGram = 2, MaxGram = 15 }) ) .Analyzers(a => a .Add( "default_index", new Nest.CustomAnalyzer { Tokenizer = "standard", Filter = new[] { "standard", "lowercase", "asciifolding", "kstem", "ngram" } } ) .Add( "suffix", new Nest.CustomAnalyzer { Tokenizer = "keyword", Filter = new[] { "standard", "lowercase", "asciifolding", "reverse" } } ) ) )); return client; }
public ConnectionSettings CreateConnectionFromSettings() { var clientSettings = new ConnectionSettings(new Uri(string.Format("http://{0}:{1}", Host, Port))); clientSettings.SetDefaultPropertyNameInferrer(name => name); return clientSettings; }
public IElasticClient ConfigureElastic() { var connectionString = ConfigurationManager.ConnectionStrings["Elastic"]; if (connectionString == null) { throw new ArgumentException("No elastic connection string found"); } var data = connectionString.ConnectionString.Split(';'); var url = data.FirstOrDefault(x => x.StartsWith("Url", StringComparison.CurrentCultureIgnoreCase)); if (url == null) { throw new ArgumentException("No URL parameter in elastic connection string"); } var index = data.FirstOrDefault(x => x.StartsWith("DefaultIndex", StringComparison.CurrentCultureIgnoreCase)); if (index.IsNullOrEmpty()) { throw new ArgumentException("No DefaultIndex parameter in elastic connection string"); } index = index.Substring(13); var node = new Uri(url.Substring(4)); var settings = new Nest.ConnectionSettings(node); settings.SetDefaultIndex(index); settings.SetDefaultTypeNameInferrer(type => type.FullName.Replace("Demo.Application.ServiceStack.", "").Replace('.', '_')); // Disable camel case field names (need to match out POCO field names) settings.SetDefaultPropertyNameInferrer(field => field); var client = new ElasticClient(settings); if (!client.IndexExists(index).Exists) { client.CreateIndex(index, i => i .Analysis(analysis => analysis .TokenFilters(f => f .Add("ngram", new Nest.NgramTokenFilter { MinGram = 2, MaxGram = 15 }) ) .Analyzers(a => a .Add( "default_index", new Nest.CustomAnalyzer { Tokenizer = "standard", Filter = new[] { "standard", "lowercase", "asciifolding", "kstem", "ngram" } } ) .Add( "suffix", new Nest.CustomAnalyzer { Tokenizer = "keyword", Filter = new[] { "standard", "lowercase", "asciifolding", "reverse" } } ) ) )); } return(client); }