public static IElasticClient CreateClient(IContainer container) { var configuration = ClientConfigurationSection.GetConfiguration(); var connectionSettings = new ConnectionSettings( new Uri(configuration.ElasticSearchUrl) ); ConfigureIdProperty(connectionSettings); connectionSettings.SetJsonSerializerSettingsModifier(x => { x.Converters = ContentIndexer.Instance.IndexingConventions.JsonConverters; x.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }); connectionSettings.SetDefaultTypeNameInferrer(x => typeof(IContent).IsAssignableFrom(x) ? Constants.EPiServerContentTypeName : null); connectionSettings.SetDefaultIndex(container.GetInstance<IndexResolver>().ResolveIndex()); connectionSettings.ExposeRawResponse(); container.Configure(x => x.For<ConnectionSettings>().Use(connectionSettings)); return new ElasticClient(connectionSettings, null, new PreSerializationProccessor(connectionSettings)); }
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 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 static void Main(string[] args) { var node = new Uri("http://localhost:9200"); var settings = new ConnectionSettings(node, "elastic-searcher"); settings.SetDefaultTypeNameInferrer(t => t.Name.ToUpperInvariant()); IElasticClient client = new ElasticClient(settings); IPersonSearch personSearcher = new PersonSearch(client); Utils.IndexItems(client); var value = Console.ReadLine(); int id = Convert.ToInt32(value); if (id != 0) { personSearcher.GetItem<Person>(id); } else { Utils.ClearItems(client); } Console.ReadKey(); }