protected override ISearchProvider GetSearchProvider() { var host = Environment.GetEnvironmentVariable("TestElasticsearchHost") ?? "localhost:9200"; var provider = new ElasticSearchProvider(new SearchConnection($"server=http://{host};scope=test"), GetSettingsManager()); return(provider); }
public void ShouldReturnOnlyUserSearchDocuments() { //Arrange var documents = new List <UserSearchModel> { new UserSearchModel { Id = "A001", SearchType = SearchCategory.User } }; ConfigureTesShareResources(documents); _sut = new ElasticSearchProvider(_clientMock.Object, _searchSettingsMock.Object, _indexNameCreatorMock.Object); //Act var result = _sut.FindUsers("A001", SearchCategory.User); //Assert result.Should().NotBeNull(); result.Results.Count.Should().Be(documents.Count); result.Results.Should().AllBeOfType <UserSearchModel>(); }
protected ISearchProvider GetSearchProvider(string searchProvider, string scope) { if (searchProvider == "Lucene") { var queryBuilder = new CatalogLuceneQueryBuilder(); var conn = new SearchConnection(_LuceneStorageDir, scope); var provider = new LuceneSearchProvider(new[] { queryBuilder }, conn); return(provider); } if (searchProvider == "Elastic") { var queryBuilder = new CatalogElasticSearchQueryBuilder(); var conn = new SearchConnection("localhost:9200", scope); var provider = new ElasticSearchProvider(new[] { queryBuilder }, conn); provider.EnableTrace = true; return(provider); } throw new NullReferenceException(string.Format("{0} is not supported", searchProvider)); }
private static void ConfigureServices(IServiceCollection services) { var connectionString = _configuration["MongoConnection:ConnectionString"]; var database = _configuration["MongoConnection:Database"]; services.RegisterCommonServices(); services.AddAutoMapper(Assembly.GetAssembly(typeof(ProductMapping))); Mapper.AssertConfigurationIsValid(); services.Configure <MongoSettings>( options => { options.ConnectionString = connectionString; options.Database = database; }); var serviceProvider = services.BuildServiceProvider(); var configurationRepository = serviceProvider.GetService <IConfigurationRepository>(); //Get Environment Configurations var environment = _configuration.GetSection("MongoConnection:Environment").Value; var configurationDocument = configurationRepository.ReadConfiguration(environment).Result; //From Configuration Collection take only Product Configs var rabbitConfiguration = configurationDocument.GetAs <ConfigurationDocument>("Product"); var rabbitConnectionString = rabbitConfiguration.GetAs <string>("ConnectionString"); var rabbitDatabase = rabbitConfiguration.GetAs <string>("Database"); services.Configure <MongoSettings>( options => { options.ConnectionString = rabbitConnectionString; options.Database = rabbitDatabase; }); var elasticSearchIndex = rabbitConfiguration.GetAs <string>("ElasticSearchIndex"); var elasticSearchProvider = new ElasticSearchProvider(configurationDocument, elasticSearchIndex); var logger = new Logger(elasticSearchProvider); services.AddSingleton <ILogger>(logger); services.RegisterRabbitMqServices(); services.AddSingleton <ICatalogConsumerService, CatalogConsumerService>(); services.Configure <RabbitMqSettings>( options => { options.HostName = "localhost"; options.Username = "******"; options.Password = "******"; }); }
public void ConfigureServices(IServiceCollection services) { services.AddCors(options => { options.AddPolicy("CategoryCorsPolicy", builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()); }); services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver()); services.AddAutoMapper(Assembly.GetAssembly(typeof(CategoryMapping))); Mapper.AssertConfigurationIsValid(); //Register Custom Services services.RegisterServices(); services.AddSingleton <IConfiguration>(Configuration); //Get Environment Configurations var environment = Configuration.GetSection("MongoConnection:Environment").Value; var configurationDocument = ConfigurationRepository.ReadConfiguration(environment).Result; //From Configuration Collection take only Category Configs var dbConfiguration = configurationDocument.GetAs <ConfigurationDocument>("Category"); var connectionString = dbConfiguration.GetAs <string>("ConnectionString"); var databaseName = dbConfiguration.GetAs <string>("Database"); services.Configure <MongoSettings>( options => { options.ConnectionString = connectionString; options.Database = databaseName; }); var elasticSearchIndex = dbConfiguration.GetAs <string>("ElasticSearchIndex"); var elasticSearchProvider = new ElasticSearchProvider(configurationDocument, elasticSearchIndex); var logger = new Logger(elasticSearchProvider); services.AddSingleton <ILogger>(logger); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "Category Api", Version = "v1" }); }); }
protected ISearchProvider GetSearchProvider(string searchProvider, string scope, string dataSource = null) { ISearchProvider provider = null; var phraseSearchCriteriaPreprocessor = new PhraseSearchCriteriaPreprocessor(new SearchPhraseParser()) as ISearchCriteriaPreprocessor; var catalogSearchCriteriaPreprocessor = new CatalogSearchCriteriaPreprocessor(); var searchCriteriaPreprocessors = new[] { phraseSearchCriteriaPreprocessor, catalogSearchCriteriaPreprocessor }; if (searchProvider == "Lucene") { var connection = new SearchConnection(_luceneStorageDir, scope); var queryBuilder = new LuceneSearchQueryBuilder() as ISearchQueryBuilder; provider = new LuceneSearchProvider(new[] { queryBuilder }, connection, searchCriteriaPreprocessors); } if (searchProvider == "Elastic") { var elasticsearchHost = dataSource ?? Environment.GetEnvironmentVariable("TestElasticsearchHost") ?? "localhost:9200"; var connection = new SearchConnection(elasticsearchHost, scope); var queryBuilder = new ElasticSearchQueryBuilder() as ISearchQueryBuilder; var elasticSearchProvider = new ElasticSearchProvider(connection, searchCriteriaPreprocessors, new[] { queryBuilder }, GetSettingsManager()) { EnableTrace = true }; provider = elasticSearchProvider; } if (searchProvider == "Azure") { var azureSearchServiceName = Environment.GetEnvironmentVariable("TestAzureSearchServiceName"); var azureSearchAccessKey = Environment.GetEnvironmentVariable("TestAzureSearchAccessKey"); var connection = new SearchConnection(azureSearchServiceName, scope, accessKey: azureSearchAccessKey); var queryBuilder = new AzureSearchQueryBuilder() as ISearchQueryBuilder; provider = new AzureSearchProvider(connection, searchCriteriaPreprocessors, new[] { queryBuilder }); } if (provider == null) { throw new ArgumentException($"Search provider '{searchProvider}' is not supported", nameof(searchProvider)); } return(provider); }
static void Main(string[] args) { ServiceManager.Initialize("localhost", 8080); ServiceManager.host.Open(); IssuesFilesRepository repo = new IssuesFilesRepository(); ElasticSearchProvider searchProvider = new ElasticSearchProvider(); searchProvider.AddIssuesToIndex(repo.GetAllIssues()); Console.WriteLine( searchProvider.SearchIssues( new Query( new IssuesServiceCore.Abstract.Issue(null, "*2*", null) ) )[0]._source.Description ); Console.ReadLine(); ServiceManager.host.Close(); }
public void Throws_exceptions_elastic() { var providerType = "Elastic"; var scope = _DefaultScope; var badscope = "doesntexist"; var baddocumenttype = "badtype"; var provider = GetSearchProvider(providerType, scope); // try removing non-existing index // no exception should be generated, since 404 will be just eaten when index doesn't exist provider.RemoveAll(badscope, ""); provider.RemoveAll(badscope, baddocumenttype); // now create an index and try removing non-existent document type SearchHelper.CreateSampleIndex(provider, scope); provider.RemoveAll(scope, "sometype"); // create bad connection var queryBuilder = new ElasticSearchQueryBuilder(); var conn = new SearchConnection("localhost:9201", scope); var bad_provider = new ElasticSearchProvider(new[] { queryBuilder }, conn); bad_provider.EnableTrace = true; Assert.Throws <ElasticSearchException>(() => bad_provider.RemoveAll(badscope, "")); var criteria = new CatalogItemSearchCriteria { SearchPhrase = "product", IsFuzzySearch = true, Catalog = "goods", RecordsToRetrieve = 10, StartingRecord = 0, Pricelists = new string[] { } }; Assert.Throws <ElasticSearchException>(() => bad_provider.Search <DocumentDictionary>(scope, criteria)); }
public Logger(ElasticSearchProvider elasticSearch) { _elasticSearch = elasticSearch; }