Esempio n. 1
0
        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>();
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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 = "******";
            });
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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));
        }
Esempio n. 9
0
 public Logger(ElasticSearchProvider elasticSearch)
 {
     _elasticSearch = elasticSearch;
 }