Beispiel #1
0
        public void SaveToElasticsearchPerson()
        {
            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            using (var elasticSearchContext = new ElasticsearchContext("http://localhost:9200/", elasticsearchMappingResolver))
            {
                if (elasticSearchContext.IndexExists <Person>())
                {
                    elasticSearchContext.DeleteIndex <Person>();
                    Thread.Sleep(1200);
                }

                elasticSearchContext.IndexCreate <Person>(new IndexDefinition
                {
                    IndexSettings = new IndexSettings
                    {
                        NumberOfReplicas = 1
                    }
                });

                //elasticSearchContext.TraceProvider = new ConsoleTraceProvider();
                using (var databaseEfModel = new SQLDataModel())
                {
                    int       pointer  = 0;
                    const int interval = 1000;
                    int       length   = databaseEfModel.Person.Count();

                    while (pointer < length)
                    {
                        stopwatch.Start();
                        var collection = databaseEfModel.Person.OrderBy(t => t.BusinessEntityID).Skip(pointer).Take(interval).ToList <Person>();
                        stopwatch.Stop();
                        Console.WriteLine("Time taken for select {0} persons: {1}", interval, stopwatch.Elapsed);
                        stopwatch.Reset();

                        stopwatch.Start();
                        foreach (var item in collection)
                        {
                            elasticSearchContext.AddUpdateDocument(item, item.BusinessEntityID);
                        }
                        elasticSearchContext.SaveChanges();
                        stopwatch.Stop();
                        Console.WriteLine("Time taken to insert {0} person documents: {1}", interval, stopwatch.Elapsed);
                        stopwatch.Reset();
                        pointer = pointer + interval;
                        Console.WriteLine("Transferred: {0} items", pointer);
                    }
                }
            }
        }
Beispiel #2
0
        public Address GetAddressFromElasticsearch(string id, string parentId)
        {
            Address address;
            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            elasticsearchMappingResolver.AddElasticSearchMappingForEntityType(typeof(Address), new MappingAddress());
            using (var elasticSearchContext = new ElasticsearchContext("http://localhost:9200/", elasticsearchMappingResolver))
            {
                elasticSearchContext.TraceProvider = new ConsoleTraceProvider();
                address = elasticSearchContext.GetDocument <Address>(id, new RoutingDefinition {
                    ParentId = parentId
                });
            }

            return(address);
        }
Beispiel #3
0
        private static MappingTestsParent SetupIndexMappingTests(string index, out IElasticsearchMappingResolver elasticsearchMappingResolver)
        {
            var mappingTestsParent = new MappingTestsParent
            {
                Calls = 3,
                MappingTestsParentId = 2,
                MappingTestsItem     = new MappingTestsChild
                {
                    Description         = "Hello nested",
                    MappingTestsChildId = 5
                }
            };

            elasticsearchMappingResolver = new ElasticsearchMappingResolver();
            elasticsearchMappingResolver.AddElasticSearchMappingForEntityType(typeof(MappingTestsParent),
                                                                              MappingUtils.GetElasticsearchMapping(index));
            return(mappingTestsParent);
        }
Beispiel #4
0
        public async Task SaveDocumentToElasticsearch()
        {
            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            using (var elasticsearchContext = new ElasticsearchContext(ConfigurationManager.AppSettings["ElasticServer"], elasticsearchMappingResolver))
            {
                List <NewsDto> news = _newsService.GetAll().Where(a => a.Published).ToList();

                foreach (NewsDto item in news)
                {
                    FullInfoNews newNews = new FullInfoNews
                    {
                        ApplicationUserId = item.ApplicationUserId,
                        Body         = item.Body,
                        CategoryId   = item.CategoryId,
                        CategoryName = (await _categoryService.GetById(item.CategoryId)).Name,
                        CreatedDate  = item.CreatedDate,
                        Title        = item.Title,
                        UserName     = await _userService.GetUserNameById(item.ApplicationUserId),
                        Id           = item.Id,
                        Description  = item.Description,
                        Published    = item.Published
                    };

                    elasticsearchContext.AddUpdateDocument(newNews, newNews.Id);
                    elasticsearchContext.SaveChanges();
                }

                List <CategoryDto> categories = _categoryService.GetAll().Where(a => a.Active).ToList();

                foreach (CategoryDto item in categories)
                {
                    CategoryForElastic newCategory = new CategoryForElastic
                    {
                        Id        = item.Id,
                        Name      = item.Name,
                        CountNews = _categoryService.NewsCountByCategory(item.Id)
                    };

                    elasticsearchContext.AddUpdateDocument(newCategory, newCategory.Id);
                    elasticsearchContext.SaveChanges();
                }
            }
        }
Beispiel #5
0
        public Task Handle(UpdateCategoriesInfoCommand message, IMessageHandlerContext context)
        {
            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            using (var elasticsearchContext = new ElasticsearchContext(ConfigurationManager.AppSettings["ElasticServer"], elasticsearchMappingResolver))
            {
                CategoryForElastic newNews = new CategoryForElastic
                {
                    Id        = message.Id,
                    Name      = message.Name,
                    CountNews = message.CountNews
                };

                elasticsearchContext.AddUpdateDocument(newNews, newNews.Id);
                elasticsearchContext.SaveChanges();
            }

            return(Task.CompletedTask);
        }
Beispiel #6
0
        public void SaveToElasticsearchStateProvince()
        {
            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            using (var elasticSearchContext = new ElasticsearchContext("http://localhost:9200/", new ElasticsearchSerializerConfiguration(elasticsearchMappingResolver, true, true)))
            {
                //elasticSearchContext.TraceProvider = new ConsoleTraceProvider();
                elasticSearchContext.IndexCreate <StateProvince>();
                using (var databaseEfModel = new SQLDataModel())
                {
                    int       pointer  = 0;
                    const int interval = 20;
                    int       length   = databaseEfModel.StateProvince.Count();

                    while (pointer < length)
                    {
                        stopwatch.Start();
                        var collection = databaseEfModel.StateProvince.OrderBy(t => t.StateProvinceID).Skip(pointer).Take(interval).ToList <StateProvince>();
                        stopwatch.Stop();
                        Console.WriteLine("Time taken for select {0} Address: {1}", interval, stopwatch.Elapsed);
                        stopwatch.Reset();

                        stopwatch.Start();
                        foreach (var item in collection)
                        {
                            var ee = item.CountryRegion.Name;
                            var t  = item.Address.ToList();
                            elasticSearchContext.AddUpdateDocument(item, item.StateProvinceID);
                        }

                        elasticSearchContext.SaveChanges();

                        stopwatch.Stop();
                        Console.WriteLine("Time taken to insert {0} Address documents: {1}", interval, stopwatch.Elapsed);
                        stopwatch.Reset();
                        pointer = pointer + interval;
                        Console.WriteLine("Transferred: {0} items", pointer);
                    }
                }
            }
        }
Beispiel #7
0
        public static void Main(string[] args)
        {
            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            // You only require a mapping if the default settings are not good enough
            elasticsearchMappingResolver.AddElasticSearchMappingForEntityType(typeof(AppRecord), new AppRecordMapping());

            using (var elasticSearchContext = new ElasticsearchContext("http://localhost:9200/", elasticsearchMappingResolver))
            {
                elasticSearchContext.TraceProvider = new TraceProvider("tracingExample");
                elasticSearchContext.AddUpdateDocument(TestData.AppRecord1, TestData.AppRecord1.Hash);
                elasticSearchContext.AddUpdateDocument(TestData.AppRecord2, TestData.AppRecord2.Hash);
                elasticSearchContext.AddUpdateDocument(TestData.AppRecord3, TestData.AppRecord3.Hash);

                var addEntitiesResult = elasticSearchContext.SaveChanges();

                Console.WriteLine(addEntitiesResult.PayloadResult);
                Console.WriteLine(addEntitiesResult.Status);
                Console.WriteLine(addEntitiesResult.Description);
            }
        }
Beispiel #8
0
        public void SaveToElasticsearchPerson()
        {
            IElasticsearchMappingResolver ElasticsearchMappingResolver = new ElasticsearchMappingResolver();

            using (var ElasticsearchContext = new ElasticsearchContext("http://localhost:9200/", ElasticsearchMappingResolver))
            {
                //ElasticsearchContext.TraceProvider = new ConsoleTraceProvider();
                using (var modelPerson = new ModelPerson())
                {
                    int       pointer  = 0;
                    const int interval = 500;
                    int       length   = modelPerson.Person.Count();

                    while (pointer < length)
                    {
                        stopwatch.Start();
                        var collection = modelPerson.Person.OrderBy(t => t.BusinessEntityID).Skip(pointer).Take(interval).ToList <Person>();
                        stopwatch.Stop();
                        Console.WriteLine("Time taken for select {0} persons: {1}", interval, stopwatch.Elapsed);
                        stopwatch.Reset();


                        foreach (var item in collection)
                        {
                            ElasticsearchContext.AddUpdateDocument(item, item.BusinessEntityID);
                            string t = "yes";
                        }

                        stopwatch.Start();
                        ElasticsearchContext.SaveChanges();
                        stopwatch.Stop();
                        Console.WriteLine("Time taken to insert {0} person documents: {1}", interval, stopwatch.Elapsed);
                        stopwatch.Reset();
                        pointer = pointer + interval;
                        Console.WriteLine("Transferred: {0} items", pointer);
                    }
                }
            }
        }
Beispiel #9
0
        public void Save()
        {
            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            using (var elasticsearchContext = new ElasticsearchContext("http://localhost:9200/content", elasticsearchMappingResolver))
            {
                //elasticsearchContext.TraceProvider = new ConsoleTraceProvider();
                using (ElasticSearch db = new ElasticSearch())
                {
                    int       pointer  = 0;
                    const int interval = 100;
                    int       length   = db.Articles.Count();

                    while (pointer < length)
                    {
                        stopwatch.Start();
                        List <Article> collection = db.Articles.OrderBy(t => t.ID).Skip(pointer).Take(interval).ToList();
                        stopwatch.Stop();
                        Console.WriteLine("Time taken for select {0} AddressID: {1}", interval, stopwatch.Elapsed);
                        stopwatch.Reset();

                        foreach (Article item in collection)
                        {
                            elasticsearchContext.AddUpdateDocument(item, item.ID);
                            // elasticsearchContext.DeleteDocument<Article>(item.ID);
                            string t = "yes";
                        }

                        stopwatch.Start();
                        elasticsearchContext.SaveChanges();
                        stopwatch.Stop();
                        Console.WriteLine("Time taken to insert {0} AddressID documents: {1}", interval, stopwatch.Elapsed);
                        stopwatch.Reset();
                        pointer = pointer + interval;
                        Console.WriteLine("Transferred: {0} items", pointer);
                    }
                }
            }
        }
        public void CreateAliasForIndex3()
        {
            var indexAliasDtoTest3 = new IndexAliasDtoTest { Id = 3, Description = "no" };
            var indexAliasDtoTest4 = new IndexAliasDtoTest { Id = 4, Description = "boo" };
            var indexAliasDtoTest5 = new IndexAliasDtoTest { Id = 5, Description = "boo" };

            var aliasParameters = new AliasParameters
            {
                Actions = new List<AliasBaseParameters>
                {
                    new AliasAddParameters("test4", "indexaliasdtotests")
                    {
                        Routing="newroute",
                        Filter= new TermFilter("description", "boo") // "{ \"term\" : { \"description\" : \"boo\" } }"
                    }
                }
            };

            const bool userDefinedRouting = true;
            var elasticsearchSerializerConfiguration = new ElasticsearchSerializerConfiguration(_elasticsearchMappingResolver,
                true, false, userDefinedRouting);

            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchSerializerConfiguration))
            {
                context.AddUpdateDocument(indexAliasDtoTest3, indexAliasDtoTest3.Id, new RoutingDefinition { RoutingId = "newroute" });
                context.AddUpdateDocument(indexAliasDtoTest4, indexAliasDtoTest4.Id, new RoutingDefinition { RoutingId = "newroute" });
                context.AddUpdateDocument(indexAliasDtoTest5, indexAliasDtoTest5.Id, new RoutingDefinition { RoutingId = "newroute" });
                context.SaveChanges();

                var result = context.Alias(aliasParameters.ToString());
                Assert.IsTrue(result);

                Assert.IsTrue(context.AliasExists("test4"));

                // using the index
                var doc3 = context.GetDocument<IndexAliasDtoTest>(3, new RoutingDefinition {RoutingId = "newroute"});
                Assert.IsTrue(doc3.Id == 3);
                var doc4 = context.GetDocument<IndexAliasDtoTest>(4, new RoutingDefinition { RoutingId = "newroute" });
                Assert.IsTrue(doc4.Id == 4);

            }

            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            elasticsearchMappingResolver.AddElasticSearchMappingForEntityType(
                typeof(IndexAliasDtoTest),
                MappingUtils.GetElasticsearchMapping<IndexAliasDtoTest>("test4", "indexaliasdtotest")
            );

            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolver))
            {
                // using the alias
                var xx = context.GetDocument<IndexAliasDtoTest>(4);
                Assert.IsTrue(xx.Id == 4);

                // should not be found due to filter
                var result = context.SearchById<IndexAliasDtoTest>(3);
                Assert.IsNull(result);
            }
        }
        public void ReindexTest()
        {
            var indexAliasDtoTestV1 = new IndexAliasDtoTestThree { Id = 1, Description = "V1" };
            var indexAliasDtoTestV2 = new IndexAliasDtoTestThree { Id = 2, Description = "V2" };

            IElasticsearchMappingResolver elasticsearchMappingResolverDirectIndex = new ElasticsearchMappingResolver();
            IElasticsearchMappingResolver elasticsearchMappingResolverDirectIndexV1 = new ElasticsearchMappingResolver();
            var mappingV1 = new IndexAliasDtoTestThreeMappingV1();

            IElasticsearchMappingResolver elasticsearchMappingResolverDirectIndexV2 = new ElasticsearchMappingResolver();
            var mappingV2 = new IndexAliasDtoTestThreeMappingV2();

            elasticsearchMappingResolverDirectIndexV1.AddElasticSearchMappingForEntityType(typeof(IndexAliasDtoTestThree), mappingV1);
            elasticsearchMappingResolverDirectIndexV2.AddElasticSearchMappingForEntityType(typeof(IndexAliasDtoTestThree), mappingV2);

            // Step 1 create index V1 and add alias
            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndexV1))
            {
                // create the index
                context.AddUpdateDocument(indexAliasDtoTestV1, indexAliasDtoTestV1.Id);
                context.SaveChanges();

                var resultCreate = context.AliasCreateForIndex("indexaliasdtotestthrees", "indexaliasdtotestthree_v1");
                Assert.IsTrue(resultCreate);
            }

            // Step 2 create index V2 and replace alias
            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndexV2))
            {
                // create the index
                context.AddUpdateDocument(indexAliasDtoTestV2, indexAliasDtoTestV2.Id);
                context.SaveChanges();

                var result = context.AliasReplaceIndex("indexaliasdtotestthrees", "indexaliasdtotestthree_v1", "indexaliasdtotestthree_v2");
                Assert.IsTrue(result);
            }

            Task.Run(() =>
            {
                using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndex))
                {
                    while (true)
                    {
                        Thread.Sleep(1000);
                        var itemOk = context.SearchById<IndexAliasDtoTestThree>(2);
                        if (itemOk != null)
                        {
                            _resetEvent.Set();
                        }

                    }
                }
            // ReSharper disable once FunctionNeverReturns
            });

            WaitForDataOrFail();

            // delete index v1
            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndexV1))
            {
                context.AllowDeleteForIndex = true;
                var thirdDelete = context.DeleteIndexAsync<IndexAliasDtoTestThree>();
                thirdDelete.Wait();
            }

            // delete index v2
            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndexV2))
            {
                context.AllowDeleteForIndex = true;
                var thirdDelete = context.DeleteIndexAsync<IndexAliasDtoTestThree>();
                thirdDelete.Wait();
            }
        }
        public void ReindexTest()
        {
            var indexAliasDtoTestV1 = new IndexAliasDtoTestThree {
                Id = 1, Description = "V1"
            };
            var indexAliasDtoTestV2 = new IndexAliasDtoTestThree {
                Id = 2, Description = "V2"
            };

            IElasticsearchMappingResolver elasticsearchMappingResolverDirectIndex   = new ElasticsearchMappingResolver();
            IElasticsearchMappingResolver elasticsearchMappingResolverDirectIndexV1 = new ElasticsearchMappingResolver();
            var mappingV1 = new IndexAliasDtoTestThreeMappingV1();

            IElasticsearchMappingResolver elasticsearchMappingResolverDirectIndexV2 = new ElasticsearchMappingResolver();
            var mappingV2 = new IndexAliasDtoTestThreeMappingV2();

            elasticsearchMappingResolverDirectIndexV1.AddElasticSearchMappingForEntityType(typeof(IndexAliasDtoTestThree), mappingV1);
            elasticsearchMappingResolverDirectIndexV2.AddElasticSearchMappingForEntityType(typeof(IndexAliasDtoTestThree), mappingV2);

            // Step 1 create index V1 and add alias
            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndexV1))
            {
                // create the index
                context.AddUpdateDocument(indexAliasDtoTestV1, indexAliasDtoTestV1.Id);
                context.SaveChanges();

                var resultCreate = context.AliasCreateForIndex("indexaliasdtotestthrees", "indexaliasdtotestthree_v1");
                Assert.IsTrue(resultCreate);
            }

            // Step 2 create index V2 and replace alias
            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndexV2))
            {
                // create the index
                context.AddUpdateDocument(indexAliasDtoTestV2, indexAliasDtoTestV2.Id);
                context.SaveChanges();

                var result = context.AliasReplaceIndex("indexaliasdtotestthrees", "indexaliasdtotestthree_v1", "indexaliasdtotestthree_v2");
                Assert.IsTrue(result);
            }


            Task.Run(() =>
            {
                using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndex))
                {
                    while (true)
                    {
                        Thread.Sleep(1000);
                        var itemOk = context.SearchById <IndexAliasDtoTestThree>(2);
                        if (itemOk != null)
                        {
                            _resetEvent.Set();
                        }
                    }
                }
// ReSharper disable once FunctionNeverReturns
            });


            WaitForDataOrFail();

            // delete index v1
            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndexV1))
            {
                context.AllowDeleteForIndex = true;
                var thirdDelete = context.DeleteIndexAsync <IndexAliasDtoTestThree>();
                thirdDelete.Wait();
            }

            // delete index v2
            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolverDirectIndexV2))
            {
                context.AllowDeleteForIndex = true;
                var thirdDelete = context.DeleteIndexAsync <IndexAliasDtoTestThree>();
                thirdDelete.Wait();
            }
        }
        public void CreateAliasForIndex3()
        {
            var indexAliasDtoTest3 = new IndexAliasDtoTest {
                Id = 3, Description = "no"
            };
            var indexAliasDtoTest4 = new IndexAliasDtoTest {
                Id = 4, Description = "boo"
            };
            var indexAliasDtoTest5 = new IndexAliasDtoTest {
                Id = 5, Description = "boo"
            };

            var aliasParameters = new AliasParameters
            {
                Actions = new List <AliasBaseParameters>
                {
                    new AliasAddParameters("test4", "indexaliasdtotests")
                    {
                        Routing = "newroute",
                        Filter  = new TermFilter("description", "boo")                       // "{ \"term\" : { \"description\" : \"boo\" } }"
                    }
                }
            };

            const bool userDefinedRouting = true;
            var        elasticsearchSerializerConfiguration = new ElasticsearchSerializerConfiguration(_elasticsearchMappingResolver,
                                                                                                       true, false, userDefinedRouting);

            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchSerializerConfiguration))
            {
                context.AddUpdateDocument(indexAliasDtoTest3, indexAliasDtoTest3.Id, new RoutingDefinition {
                    RoutingId = "newroute"
                });
                context.AddUpdateDocument(indexAliasDtoTest4, indexAliasDtoTest4.Id, new RoutingDefinition {
                    RoutingId = "newroute"
                });
                context.AddUpdateDocument(indexAliasDtoTest5, indexAliasDtoTest5.Id, new RoutingDefinition {
                    RoutingId = "newroute"
                });
                context.SaveChanges();

                var result = context.Alias(aliasParameters.ToString());
                Assert.IsTrue(result);

                Assert.IsTrue(context.AliasExists("test4"));

                // using the index
                var doc3 = context.GetDocument <IndexAliasDtoTest>(3, new RoutingDefinition {
                    RoutingId = "newroute"
                });
                Assert.IsTrue(doc3.Id == 3);
                var doc4 = context.GetDocument <IndexAliasDtoTest>(4, new RoutingDefinition {
                    RoutingId = "newroute"
                });
                Assert.IsTrue(doc4.Id == 4);
            }

            IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();

            elasticsearchMappingResolver.AddElasticSearchMappingForEntityType(
                typeof(IndexAliasDtoTest),
                MappingUtils.GetElasticsearchMapping <IndexAliasDtoTest>("test4", "indexaliasdtotest")
                );

            using (var context = new ElasticsearchContext(ConnectionString, elasticsearchMappingResolver))
            {
                // using the alias
                var xx = context.GetDocument <IndexAliasDtoTest>(4);
                Assert.IsTrue(xx.Id == 4);

                // should not be found due to filter
                var result = context.SearchById <IndexAliasDtoTest>(3);
                Assert.IsNull(result);
            }
        }
Beispiel #14
0
        private static MappingTestsParent SetupIndexMappingTests(string index, out IElasticsearchMappingResolver elasticsearchMappingResolver)
        {
            var mappingTestsParent = new MappingTestsParent
            {
                Calls = 3,
                MappingTestsParentId = 2,
                MappingTestsItem = new MappingTestsChild
                {
                    Description = "Hello nested",
                    MappingTestsChildId = 5
                }
            };

            elasticsearchMappingResolver = new ElasticsearchMappingResolver();
            elasticsearchMappingResolver.AddElasticSearchMappingForEntityType(typeof (MappingTestsParent),
                MappingUtils.GetElasticsearchMapping(index));
            return mappingTestsParent;
        }