예제 #1
0
        static async Task Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            IConfiguration config = new ConfigurationBuilder()
                                    .SetBasePath(Directory.GetCurrentDirectory())
                                    .AddJsonFile("appsettings.json")
                                    .Build();
            var elasticsearchSettings = new ElasticsearchSettings();

            config.Bind(nameof(ElasticsearchSettings), elasticsearchSettings);

            var unitOfWork           = new UnitOfWork();
            var printService         = new PrintService();
            var elasticsearchService = new ElasticsearchService(elasticsearchSettings, unitOfWork, printService);
            await elasticsearchService.SeedDataAsync();

            printService.PrintInfo($"Enter sesrch text (or quit to exit)...{Environment.NewLine}", false);

            // input search text: "1", "1st", "first", "one", "One", "ONe", "First", "FIRST", "FiRsT", "2nd", "avenue", "Avenue", "1 ave", "1 avenue", "ave"
            while (true)
            {
                Console.Write("> ");
                string search = Console.ReadLine();
                if (search.Equals("quit", StringComparison.InvariantCultureIgnoreCase))
                {
                    break;
                }

                var result = await elasticsearchService.SearchAsync(search);

                printService.PrintInfo(result);
                printService.PrintInfo($"Total items founded by search='{search}': {result.Count()}{Environment.NewLine}", false);
            }
        }
예제 #2
0
        /// <summary>
        /// Main extension method for configuring Audit.CRUD and its dependencies
        /// </summary>
        /// <param name="elasticsearchSettings">Connection settings with elasticsearch pool</param>
        public static void UseAuditCRUD(this IServiceCollection services, ElasticsearchSettings elasticsearchSettings)
        {
            services.AddElasticsearchConfiguration(elasticsearchSettings);

            services.AddScoped <AuditCRUDDbContext>();

            services.AddScoped <IAuditLogRepository, AuditLogRepository>();
            services.AddScoped <IAuditCRUD, AuditCRUDService>();
        }
        public static void AddElasticSearch(this IServiceCollection services, IConfiguration configuration)
        {
            services.Configure <ElasticsearchSettings>(configuration.GetSection("Elasticsearch"));

            services.AddScoped <IElasticService>(servicesProvider =>
            {
                ElasticsearchSettings settings = servicesProvider.GetRequiredService <IOptions <ElasticsearchSettings> >().Value;

                Uri uri = new Uri(settings.Url);

                ConnectionSettings connectionSettings = new ConnectionSettings(uri)
                                                        .DefaultIndex(settings.Index)
                                                        .DefaultMappingFor <PhotoDocument>(m => m.IdProperty(p => p.Id));

                IElasticClient elasticClient = new ElasticClient(connectionSettings);
                return(new ElasticService(settings.Index, elasticClient));
            });
        }
        public ElasticsearchService(ElasticsearchSettings elasticsearchSettings, IUnitOfWork unitOfWork, IPrintService printService)
        {
            if (elasticsearchSettings == null)
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(elasticsearchSettings));
            }

            _unitOfWork   = unitOfWork ?? throw new ArgumentNullException(nameof(unitOfWork));
            _printService = printService ?? throw new ArgumentNullException(nameof(printService));

            indexName = elasticsearchSettings.IndexName;

            var settings = new ConnectionSettings(new Uri(elasticsearchSettings.ConnectionString));

            settings.ThrowExceptions(alwaysThrow: true);
            settings.DisableDirectStreaming();
            settings.DefaultIndex(indexName);
            settings.PrettyJson();             // good for DEBUG
            _client = new ElasticClient(settings);
        }
예제 #5
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services.AddScoped <IServicoAlimentacao, ServicoAlimentacao>();
            services.AddScoped <IServicoAlbum, ServicoAlbum>();

            services.AddMvc(option => option.EnableEndpointRouting = false)
            .SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
            .AddNewtonsoftJson(opt => opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore);
            //services.AddHttpClient();
            services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
            {
                builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader();
            }));

            //bind object model from configuration
            ElasticsearchSettings elasticsearchSettings = Configuration.GetSection("ElasticsearchSettings").Get <ElasticsearchSettings>();

            //add it to services
            services.AddSingleton(elasticsearchSettings);
        }
예제 #6
0
        /// <summary>
        /// Configures and registers elasticsearch instance
        /// </summary>
        /// <param name="elasticsearchSettings">Connection settings with elasticsearch pool</param>
        public static void AddElasticsearchConfiguration(this IServiceCollection services, ElasticsearchSettings elasticsearchSettings)
        {
            var uri = new Uri(elasticsearchSettings.Uri);

            var pool = new SingleNodeConnectionPool(uri);
            var connectionSettings = new ConnectionSettings(pool, JsonNetSerializer.Default).DefaultIndex(elasticsearchSettings.Index);

            var client = new ElasticClient(connectionSettings);

            services.Add(ServiceDescriptor.Singleton <IElasticClient>(client));
        }
예제 #7
0
 public ServicoAlbum(
     ElasticsearchSettings elasticsearchSettings
     )
 {
     _elasticsearchSettings = elasticsearchSettings;
 }
예제 #8
0
 public void Init()
 {
     _providerSettingsMock = new Mock <IProvideSettings>();
     _sut = new ElasticsearchSettings(_providerSettingsMock.Object);
 }
 public ServicoAlimentacao(
     ElasticsearchSettings elasticsearchSettings
     )
 {
     _elasticsearchSettings = elasticsearchSettings;
 }