public void CloseIndexWhichDoesNotExist() { using (var context = new ElasticsearchContext(ConnectionString, new ElasticsearchSerializerConfiguration(_elasticsearchMappingResolver))) { context.IndexClose("help"); } }
public void SearchAggGeohashGridBucketAggregationWithSubAggSignificantTermsBucketAggregationWithNoHits() { var search = new Search { Aggs = new List<IAggs> { new GeohashGridBucketAggregation("termsDetails", "location") { Aggs = new List<IAggs> { new SignificantTermsBucketAggregation("testSignificantTermsBucketAggregation", "details") }, Precision = 2 } } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchAggTest>()); var items = context.Search<SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var termsAggResult = items.PayloadResult.Aggregations.GetComplexValue<TermsBucketAggregationsResult>("termsDetails"); var significantAggResult = termsAggResult.Buckets[0].GetSubAggregationsFromJTokenName<SignificantTermsBucketAggregationsResult>("testSignificantTermsBucketAggregation"); Assert.AreEqual(3, significantAggResult.Buckets[0].BgCount); } }
public void CreateAliasForIndex2() { var indexAliasDtoTest = new IndexAliasDtoTest { Id = 1, Description = "Test index for aliases" }; var aliasParameters = new AliasParameters { Actions = new List<AliasBaseParameters> { new AliasAddParameters("test2", "indexaliasdtotests"), new AliasAddParameters("test3", "indexaliasdtotests") } }; using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.AddUpdateDocument(indexAliasDtoTest, indexAliasDtoTest.Id); context.SaveChanges(); var result = context.Alias(aliasParameters.ToString()); Assert.IsTrue(result); Assert.IsTrue(context.AliasExists("test2")); Assert.IsTrue(context.AliasExists("test3")); } }
public void SearchQueryBoolQuery() { var search = new Search { Query = new Query( new BoolQuery { Must = new List<IQuery> { new RangeQuery("id") { GreaterThanOrEqualTo = "2", LessThan = "3", LessThanOrEqualTo = "2", GreaterThan = "1" } }, MustNot = new List<IQuery> { new RangeQuery("id") {GreaterThan="34"} }, Should = new List<IQuery> { new TermQuery("name", "two") }, Boost=2.0, DisableCoord= false, MinimumShouldMatch= "2" } ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(2, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public void SearchAggDateRangesBucketAggregationKeyedWithNoHits() { var search = new Search { Aggs = new List<IAggs> { new DateRangeBucketAggregation("testRangesBucketAggregation", "dateofdetails", "MM-yyy", new List<RangeAggregationParameter<string>> { new ToRangeAggregationParameter<string>("now-8M/M"), new ToFromRangeAggregationParameter<string>("now-8M/M", "now-10M/M"), new FromRangeAggregationParameter<string>("now-10M/M") { Key = "keyName" } }) { Keyed= true } } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchAggTest>()); var items = context.Search<SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue<RangesNamedBucketAggregationsResult>("testRangesBucketAggregation"); var test = aggResult.Buckets.GetSubAggregationsFromJTokenName<RangeBucket>("keyName"); Assert.AreEqual(7, test.DocCount); } }
public void SearchAggFilterBucketAggregationWithChildrenNoHits() { var search = new Search { Aggs = new List<IAggs> { new FilterBucketAggregation("globalbucket", new GeoDistanceFilter("location", new GeoPoint(32,42), new DistanceUnitKilometer(10000) )) { Aggs = new List<IAggs> { new MaxMetricAggregation("maxAgg", "lift"), new MinMetricAggregation("minAgg", "lift"), new TopHitsMetricAggregation("topHits") { Size = 3 } } } } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchAggTest>()); var items = context.Search<SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue<GlobalBucketAggregationsResult>("globalbucket"); var max = aggResult.GetSingleMetricSubAggregationValue<double>("maxAgg"); Assert.AreEqual(7, aggResult.DocCount); Assert.AreEqual(2.9, max); } }
public void SearchAggGeohashGridBucketAggregationWithTopHitsSubWithNoHits() { var search = new Search { Aggs = new List<IAggs> { new GeohashGridBucketAggregation("testGeohashGridBucketAggregation", "location") { Aggs = new List<IAggs> { new TopHitsMetricAggregation("tophits") } } } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchAggTest>()); var items = context.Search<SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue<GeohashGridBucketAggregationsResult>("testGeohashGridBucketAggregation"); var topHits = aggResult.Buckets[0].GetSubAggregationsFromJTokenName<TopHitsMetricAggregationsResult<SearchAggTest>>("tophits"); Assert.AreEqual(3, aggResult.Buckets[0].DocCount); Assert.AreEqual(3, topHits.Hits.Total); } }
public void SearchAggSignificantTermsBucketAggregationPropertiesSet() { var search = new Search { Query = new Query(new MatchAllQuery()), Aggs = new List<IAggs> { new SignificantTermsBucketAggregation("testSignificantTermsBucketAggregation", "details") { BackgroundFilter= new TermFilter("name", "details"), InformationRetrievalRetrieval = new MutualInformation { BackgroundIsSuperset = false, IncludeNegatives = false }, ExecutionHint= ExecutionHint.global_ordinals } } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchAggTest>()); var items = context.Search<SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue<SignificantTermsBucketAggregationsResult>("testSignificantTermsBucketAggregation"); Assert.AreEqual(7, aggResult.DocCount); } }
public void SearchAggTermsBucketAggregationnWithChildrenSubAggNoHits() { var search = new Search { Aggs = new List<IAggs> { new TermsBucketAggregation("test_min", "info") { Aggs = new List<IAggs> { new ChidrenBucketAggregation("childrenAgg", "testobjchildsep") { Aggs = new List<IAggs> { new TermsBucketAggregation("infoAgg", "info") } } } } } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<TestObjParentSep>()); Assert.IsTrue(context.IndexTypeExists<TestObjChildSep>()); var items = context.Search<TestObjParentSep>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue<TermsBucketAggregationsResult>("test_min"); Assert.AreEqual(3, aggResult.Buckets[0].DocCount); } }
public void SearchQueryMoreLikeThisQuery() { var search = new Search { Query = new Query( new MoreLikeThisQuery { Fields = new List<string> {"moreinfo"}, LikeText = "yes one", MinTermFreq = 1, Boost = 50, MinDocFreq = 1, PercentTermsToMatch = 0.01 } ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.IsTrue(context.IndexTypeExists<MoreLikeThisTestDto>()); var items = context.Search<MoreLikeThisTestDto>(search); Assert.AreEqual(2, items.PayloadResult.Hits.Total); } }
public void SearchAggTermsBucketAggregationWithSubTopHitsMetricAggregationWithNoHits() { var search = new Search { Aggs = new List<IAggs> { new TermsBucketAggregation("test_min", "lift") { Aggs = new List<IAggs> { new TopHitsMetricAggregation("topHits") { Size = 5 } } } } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchAggTest>()); var items = context.Search<SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue<TermsBucketAggregationsResult>("test_min"); var hitsForBucket = aggResult.Buckets[0].GetSubAggregationsFromJTokenName<TopHitsMetricAggregationsResult<SearchAggTest>>("topHits"); Assert.AreEqual(3, aggResult.Buckets[0].DocCount); Assert.AreEqual(2.1, hitsForBucket.Hits.HitsResult[0].Source.Lift); } }
public void CreateNewIndexAndMappingWithSimpleNullListAndNullArrayListAndAlias() { using (var context = new ElasticsearchContext(ConnectionString, new ElasticsearchSerializerConfiguration(_elasticsearchMappingResolver))) { context.TraceProvider = new ConsoleTraceProvider(); context.IndexCreate<AliasCreateIndexOne>( new IndexDefinition { IndexAliases = new IndexAliases { Aliases = new List<IndexAlias> { new IndexAlias("testnew"), new IndexAlias("testnewroute") { Routing = "ddd" } } } }); Thread.Sleep(1500); var result = context.IndexExists<AliasCreateIndexOne>(); Assert.IsTrue(result); } }
public void SearchAggScriptedMetricAggregationWithParamsWithNoHits() { var search = new Search { Aggs = new List<IAggs> { new ScriptedMetricAggregation("topScriptedMetricAggregation", "_agg.transactions.add(doc['lift'].value * _agg.times)") { InitScript= "_agg['transactions'] = []", CombineScript= "script_calculated = 0; for (t in _agg.transactions) { script_calculated += t }; return script_calculated", ReduceScript= "script_calculated = 0; for (a in _aggs) { script_calculated += a }; return script_calculated", Params = new ParamsForScript("_agg") { Params = new List<ScriptParameter> { new ScriptParameter("times", 1.4), } } } } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchAggTest>()); var items = context.Search<SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetSingleMetricAggregationValue<double>("topScriptedMetricAggregation"); Assert.AreEqual(22.82, aggResult); } }
public void CreateGeoShapeCircleMapping() { var geoShapeCircleDto = new GeoShapeCircleDto { CircleTest = new GeoShapeCircle { Coordinates = new GeoPoint(45, 45), Radius="100m" }, Id = "1", Name = "test", }; using (var context = new ElasticsearchContext(ConnectionString, new ElasticsearchSerializerConfiguration(_elasticsearchMappingResolver))) { context.TraceProvider = new ConsoleTraceProvider(); context.IndexCreate<GeoShapeCircleDto>(); Thread.Sleep(1500); Assert.IsNotNull(context.IndexExists<GeoShapeCircleDto>()); context.AddUpdateDocument(geoShapeCircleDto, geoShapeCircleDto.Id); context.SaveChanges(); Thread.Sleep(1500); Assert.AreEqual(1, context.Count<GeoShapeCircleDto>()); var result = context.SearchById<GeoShapeCircleDto>(1); Assert.AreEqual(geoShapeCircleDto.CircleTest.Coordinates.Count, result.CircleTest.Coordinates.Count); } }
public void SearchQueryQueryStringQueryAllProperties() { var search = new Search { Query = new Query(new QueryStringQuery("one document") { AllowLeadingWildcard = true, Analyzer = LanguageAnalyzers.German, AnalyzeWildcard = false, AutoGeneratePhraseQueries = false, Boost = 2.1, DefaultField = "_all", DefaultOperator = QueryDefaultOperator.OR, EnablePositionIncrements = true, Fuzziness = 0.5, FuzzyMaxExpansions = 49, FuzzyPrefixLength = 0, Lenient = false, Locale = "ROOT" }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(2, items.PayloadResult.Hits.Total); } }
public void TearDown() { using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.AllowDeleteForIndex = true; var entityResult = context.DeleteIndexAsync<SearchTest>(); entityResult.Wait(); } }
public void TestAliasExistsBadAlias() { using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); var found = context.AliasExists("existsaliastest".ToUpper()); Assert.IsFalse(found); } }
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(Skill), new SkillElasticsearchMapping()); using (var elasticSearchContext = new ElasticsearchContext("http://localhost:9200/", elasticsearchMappingResolver)) { elasticSearchContext.TraceProvider = new TraceProvider("tracingExample"); elasticSearchContext.AddUpdateDocument(TestData.SkillEf, TestData.SkillEf.Id); elasticSearchContext.AddUpdateDocument(TestData.SkillOrm, TestData.SkillOrm.Id); elasticSearchContext.AddUpdateDocument(TestData.SkillSQLServer, TestData.SkillSQLServer.Id); elasticSearchContext.AddUpdateDocument(TestData.SkillGermanWithFunnyLetters, TestData.SkillGermanWithFunnyLetters.Id); elasticSearchContext.AddUpdateDocument(TestData.SkillLevel, TestData.SkillLevel.Id); var addEntitiesResult = elasticSearchContext.SaveChanges(); Console.WriteLine(addEntitiesResult.PayloadResult); Console.WriteLine(addEntitiesResult.Status); Console.WriteLine(addEntitiesResult.Description); } using (var elasticSearchContext = new ElasticsearchContext("http://localhost:9200/", elasticsearchMappingResolver)) { elasticSearchContext.TraceProvider = new TraceProvider("tracingExample"); // get a entity and update it, then delete an entity Skill singleEntityWithId = elasticSearchContext.GetDocument<Skill>("11"); singleEntityWithId.Updated = DateTime.UtcNow; elasticSearchContext.AddUpdateDocument(TestData.SkillOrm, TestData.SkillOrm.Id); elasticSearchContext.DeleteDocument<Skill>(TestData.SkillEf.Id); elasticSearchContext.SaveChanges(); elasticSearchContext.AddUpdateDocument(TestData.SkillEf, TestData.SkillEf.Id); var nextResult = elasticSearchContext.SaveChanges(); Console.WriteLine(nextResult.PayloadResult); Console.WriteLine(nextResult.Status); Console.WriteLine(nextResult.Description); } using (var elasticSearchContext = new ElasticsearchContext("http://localhost:9200/", elasticsearchMappingResolver)) { elasticSearchContext.TraceProvider = new TraceProvider("tracingExample"); // deleting indexes are usually not required... elasticSearchContext.AllowDeleteForIndex = true; var result = elasticSearchContext.DeleteIndexAsync<SkillLevel>(); result.Wait(); var result1 = elasticSearchContext.DeleteIndexAsync<Skill>(); result1.Wait(); //var result = elasticSearchContext.DeleteIndex<Skill>(); elasticSearchContext.SaveChanges(); //Console.WriteLine(result.Result.PayloadResult); //Console.WriteLine(result.Result.Status); //Console.WriteLine(result.Result.Description); //Console.ReadLine(); } }
public void GlobalElasticsearchMappingSearchAllTest() { // You require this for a global search, it is in the setup fixture //_elasticsearchMappingResolver.AddElasticSearchMappingForEntityType(typeof(object), new GlobalElasticsearchMapping()); using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { var results = context.Search<object>(new Search()); Assert.GreaterOrEqual(results.PayloadResult.Hits.Total, 3); } }
public void GlobalElasticsearchMappingCountTest() { // You require this for a global search, it is in the setup fixture //_elasticsearchMappingResolver.AddElasticSearchMappingForEntityType(typeof(object), new GlobalElasticsearchMapping()); using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { var count = context.Count<object>(); Assert.GreaterOrEqual(count, 3); } }
public void SearchQueryMultiMatchAllTest() { var search = new Search { Query = new Query(new MultiMatchQuery("document") { MultiMatchType = MultiMatchType.most_fields, TieBreaker = 0.5, Fields = new List<string> { "name", "details" } }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(1, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public void SearchFilterMatchAllTest() { var search = new Search { Filter = new Filter(new MatchAllFilter { Boost = 1.1 }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(1, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public void SearchQueryQueryStringQuery() { var search = new Search { Query = new Query(new QueryStringQuery("one document")) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(2, items.PayloadResult.Hits.Total); } }
public void SearchQueryConstantScoreQueryWithQuery() { var search = new Search { Query = new Query(new ConstantScoreQuery(new TermQuery("name", "two")){Boost = 2.0}) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(2, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public void SearchQueryMatchTest() { var search = new Search { Query = new Query(new MatchQuery("name", "document one") { Boost = 1.1, Fuzziness = 1 }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(1, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public Address GetAddressFromElasticsearch(int id) { Address address; IElasticsearchMappingResolver ElasticsearchMappingResolver = new ElasticsearchMappingResolver(); using (var ElasticsearchContext = new ElasticsearchContext("http://localhost:9200/", ElasticsearchMappingResolver)) { address = ElasticsearchContext.GetDocument<Address>(id); } return address; }
public Person GetPersonFromElasticsearch(int id) { Person person; IElasticsearchMappingResolver ElasticsearchMappingResolver = new ElasticsearchMappingResolver(); using (var ElasticsearchContext = new ElasticsearchContext("http://localhost:9200/", ElasticsearchMappingResolver)) { person = ElasticsearchContext.GetDocument<Person>(id); } return person; }
public void SearchQueryMatchPhaseTest() { var search = new Search { Query = new Query(new MatchPhaseQuery("name", "one") { Analyzer = LanguageAnalyzers.German, Slop = 1, Operator = Operator.and, CutoffFrequency = 0.2, ZeroTermsQuery = ZeroTermsQuery.none, Boost = 1.1, Fuzziness = 1 }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(1, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public void SaveToElasticsearchStateProvinceIfitDoesNotExist() { IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver(); using (var elasticSearchContext = new ElasticsearchContext("http://localhost:9200/", new ElasticsearchSerializerConfiguration(elasticsearchMappingResolver, true, true))) { if (!elasticSearchContext.IndexTypeExists<StateProvince>()) { elasticSearchContext.TraceProvider = new ConsoleTraceProvider(); using (var databaseEfModel = new EfModel()) { int pointer = 0; const int interval = 20; bool firstRun = true; 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; elasticSearchContext.AddUpdateDocument(item, item.StateProvinceID); } if (firstRun) { elasticSearchContext.SaveChangesAndInitMappings(); firstRun = false; } else { 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); } } } } }
public void SearchQueryMatchPhasePrefixTest() { var search = new Search { Query = new Query(new MatchPhasePrefixQuery("name", "one") { MaxExpansions = 500, Boost = 1.1, MinimumShouldMatch = "50%", Fuzziness = 1 }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists<SearchTest>()); var items = context.Search<SearchTest>(search); Assert.AreEqual(1, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public void DeleteGlobalWarmer() { var ex = Assert.Throws <ElasticsearchCrudException>(() => { using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { const string warmerName = "mywarmerone"; var warmer = new Warmer(warmerName) { Query = new Query(new MatchAllQuery()) }; context.TraceProvider = new ConsoleTraceProvider(); var found = context.WarmerCreate(warmer); Assert.True(found); var ok = context.WarmerDelete(warmerName, ""); Assert.True(ok); } }); }
public void SearchQueryRegExpQuery() { var search = new Search { Query = new Query(new RegExpQuery("name", "o.*") { Boost = 1.7, Flags = RegExpFlags.INTERSECTION, MaxDeterminizedStates = 10000 }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.IsTrue(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.AreEqual(1, items.PayloadResult.Hits.Total); } }
public void SearchAggTermsBucketAggregationWithNoHits() { var search = new Search { Aggs = new List <IAggs> { new TermsBucketAggregation("test_min", "lift") } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists <SearchAggTest>()); var items = context.Search <SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue <TermsBucketAggregationsResult>("test_min"); Assert.AreEqual(3, aggResult.Buckets[0].DocCount); } }
public void SearchFilterHasParentQuery() { var search = new Search { Query = new Query( new HasParentQuery("testobjparentsep", new MatchAllQuery()) { ScoreMode = ScoreModeHasParentQuery.none } ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists <TestObjChildSep>()); var items = context.Search <TestObjChildSep>(search); Assert.AreEqual(4, items.PayloadResult.Hits.Total); } }
public void SearchFilterHasChildFilter() { var search = new Search { Filter = new Filter( new HasChildFilter("testobjchildsep", new MatchAllFilter()) { MaxChildren = 10, MinChildren = 2 } ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists <TestObjParentSep>()); var items = context.Search <TestObjParentSep>(search); Assert.AreEqual(3, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public void SearchAggDateHistogramBucketAggregationWithNoHits() { var search = new Search { Aggs = new List <IAggs> { new DateHistogramBucketAggregation("testHistogramBucketAggregation", "dateofdetails", new TimeUnitMonth(1)) } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.True(context.IndexTypeExists <SearchAggTest>()); var items = context.Search <SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue <DateHistogramBucketAggregationsResult>("testHistogramBucketAggregation"); Assert.Equal(1, aggResult.Buckets[0].DocCount); } }
public void TearDown() { using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.AllowDeleteForIndex = true; var entityResult1 = context.DeleteIndexAsync <SkillTestEntityTwo>(); entityResult1.Wait(); var entityResult2 = context.DeleteIndexAsync <SkillParentCollection>(); entityResult2.Wait(); var entityResult3 = context.DeleteIndexAsync <SkillParentArray>(); entityResult3.Wait(); var entityResult4 = context.DeleteIndexAsync <SkillChild>(); entityResult4.Wait(); var entityResult5 = context.DeleteIndexAsync <SkillTestEntity>(); entityResult5.Wait(); var entityResult6 = context.DeleteIndexAsync <SkillWithIntArray>(); entityResult6.Wait(); var entityResult7 = context.DeleteIndexAsync <SkillWithIntCollection>(); entityResult7.Wait(); var entityResult8 = context.DeleteIndexAsync <SkillWithSingleChild>(); entityResult8.Wait(); var entityResult9 = context.DeleteIndexAsync <SkillSingleChildElement>(); entityResult9.Wait(); var entityResult10 = context.DeleteIndexAsync <SkillWithIntCollection>(); entityResult10.Wait(); var entityResult11 = context.DeleteIndexAsync <SkillWithStringLongAndDoubleArray>(); entityResult11.Wait(); var entityResult12 = context.DeleteIndexAsync <SkillWithStringLongAndDoubleCollection>(); entityResult12.Wait(); var entityResult13 = context.DeleteIndexAsync <SkillDocumentHastSet>(); entityResult13.Wait(); } }
public void SearchQueryCommonTermsQueryLikeBoolMatch() { var search = new Search { Query = new Query( new CommonTermsQuery("details", "leave it alone", 0.001) { LowFreqOperator = QueryDefaultOperator.AND } ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.True(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.Equal(1, items.PayloadResult.Hits.Total); } }
public void SearchQueryIdsFilter() { var search = new Search { Filter = new Filter(new IdsFilter(new List <object> { 1, 2 }) { Type = "searchtest" }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.IsTrue(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.AreEqual(2, items.PayloadResult.Hits.Total); } }
public void SearchAggMissingBucketAggregationWithNoHits() { var search = new Search { Aggs = new List <IAggs> { new MissingBucketAggregation("missingbucket", "nonExistingFieldName") } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.True(context.IndexTypeExists <SearchAggTest>()); var items = context.Search <SearchAggTest>(search, new SearchUrlParameters { SeachType = SeachType.count }); var aggResult = items.PayloadResult.Aggregations.GetComplexValue <MissingBucketAggregationsResult>("missingbucket"); Assert.Equal(7, aggResult.DocCount); } }
public void SearchQueryNotFilter() { var search = new Search { Filter = new Filter( new NotFilter(new TermFilter("name", "one")) { Cache = false } ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.IsTrue(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.AreEqual(2, items.PayloadResult.Hits.Total); } }
public void TestDefaultContextGetEntityAsync() { const int entityId = 34; using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); context.AddUpdateDocument(_entitiesForTests[entityId], entityId); // Save to Elasticsearch var ret = context.SaveChangesAsync(); Assert.AreEqual(ret.Result.Status, HttpStatusCode.OK); // Get the entity var entityResult = context.GetDocumentAsync <SkillTestEntity>(entityId); Assert.AreEqual(entityResult.Result.Status, HttpStatusCode.OK); Assert.AreEqual(entityResult.Result.PayloadResult.Id, entityId); Assert.IsNotNull(entityResult.Result.PayloadResult); } }
public void SearchFilterHasParentFilterInnerHits() { var search = new Search { Filter = new Filter( new HasParentFilter("testobjparentsep", new MatchAllFilter()) { InnerHits = new InnerHits() } ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists <TestObjChildSep>()); var items = context.Search <TestObjChildSep>(search); Assert.AreEqual(4, items.PayloadResult.Hits.Total); } }
public void SearchQueryBoolFilter() { var search = new Search { Filter = new Filter( new BoolFilter(new RangeFilter("id") { GreaterThanOrEqualTo = "2", LessThan = "3", LessThanOrEqualTo = "2", GreaterThan = "1" }) ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.IsTrue(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.AreEqual(2, items.PayloadResult.Hits.HitsResult[0].Source.Id); } }
public void CreateAliasForIndex() { var indexAliasDtoTest = new IndexAliasDtoTest { Id = 1, Description = "Test index for aliases" }; using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.AddUpdateDocument(indexAliasDtoTest, indexAliasDtoTest.Id); context.SaveChanges(); var result = context.AliasCreateForIndex("test", "indexaliasdtotests"); Assert.True(result); Thread.Sleep(1200); GetResult resultGet = context.Get(new Uri("http://localhost:9200/_alias/test")); Console.WriteLine(resultGet); } }
public void CreateIndexWithParentChildMappings() { CreateIndexList(); using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { var doc1 = context.GetDocument <ListMappingChildParentRoutingTestsLevel1>(1); Assert.NotNull(doc1); var doc2 = context.GetDocument <ListMappingChildParentRoutingTestsLevel2>(2, new RoutingDefinition { ParentId = 1, RoutingId = 1 }); Assert.NotNull(doc2); var doc3 = context.GetDocument <ListMappingChildParentRoutingTestsLevel3>(3, new RoutingDefinition { ParentId = 2, RoutingId = 1 }); Assert.NotNull(doc3); } }
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); } } } }
public void TestDefaultContextTestJsonIgnore() { using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); var testJsonIgnore = new TestJsonIgnore { MyStringArray = new List <string> { "ff", "dd" }, BlahBlah = "sss", Id = 3, MyLongArray = new List <long> { 23, 4323456, 333332 }, SkillSingleChildElement = new SkillSingleChildElement { Details = "ss", Id = 3 }, SkillSingleChildElementList = new List <SkillSingleChildElement> { new SkillSingleChildElement { Details = "ww", Id = 2 } } }; context.AddUpdateDocument(testJsonIgnore, testJsonIgnore.Id); // Save to Elasticsearch context.SaveChanges(); var ret = context.GetDocument <TestJsonIgnore>(3); Assert.AreEqual(ret.MyLongArray, null); Assert.AreEqual(ret.SkillSingleChildElement, null); Assert.AreEqual(ret.SkillSingleChildElementList, null); Assert.AreEqual(ret.BlahBlahNull, null); Assert.AreEqual(ret.BlahBlah, "sss"); Assert.AreEqual(ret.Id, 3); } }
public void SearchAggPercentileRanksMetricAggregationNoHits() { var search = new Search { Size = 0, Aggs = new List <IAggs> { new PercentileRanksMetricAggregation("test_PercentilesMetricAggregation", "lift", new List <double> { 20.0, 30.0, 40.0 }) } }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.True(context.IndexTypeExists <SearchAggTest>()); var items = context.Search <SearchAggTest>(search); var aggResult = items.PayloadResult.Aggregations.GetComplexValue <PercentileRanksMetricAggregationsResult>("test_PercentilesMetricAggregation"); Assert.Equal(100, aggResult.Values["20.0"]); } }
public void SearchQueryGeoDistanceFilter0Range() { var search = new Search { Filter = new Filter( new GeoDistanceFilter( "location", new GeoPoint(43, 43), new DistanceUnitMeter(0) ) ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.IsTrue(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.AreEqual(0, items.PayloadResult.Hits.Total); } }
public void CreateNewIndexAndMappingWithSimpleNullListAndNullArrayListAndAlias() { using (var context = new ElasticsearchContext(ConnectionString, new ElasticsearchSerializerConfiguration(_elasticsearchMappingResolver))) { context.TraceProvider = new ConsoleTraceProvider(); context.IndexCreate <AliasCreateIndexOne>(new IndexDefinition { IndexAliases = new IndexAliases { Aliases = new List <IndexAlias> { new IndexAlias("testnew"), new IndexAlias("testnewroute") { Routing = "ddd" } } } }); Thread.Sleep(1500); var result = context.IndexExists <AliasCreateIndexOne>(); Assert.IsTrue(result); } }
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); } }
public void SearchQueryQueryStringQueryMultipleFields() { var search = new Search { Query = new Query(new QueryStringQuery("one document") { Fields = new List <string> { "name", "details" }, TieBreaker = 1, UseDisMax = true }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { Assert.IsTrue(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.AreEqual(2, items.PayloadResult.Hits.Total); } }
public void SearchQueryGeoDistanceFilter0Range() { var search = new Search { Filter = new Filter( new GeoDistanceFilter( "location", new GeoPoint(43, 43), new DistanceUnitMeter(0) ) ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.True(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.True(items.Description.Contains("invalid radiusMeters")); } }
public void SearchQueryScriptFilter() { var search = new Search { Filter = new Filter(new ScriptFilter("doc['lift'].value * factor") { Params = new List <ScriptParameter> { new ScriptParameter("factor", 1.5) } }) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.True(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.Equal(3, items.PayloadResult.Hits.Total); } }
public void TestDefaultContextParentWithANullHashSetOfChildObjectNested() { var testSkillParentObject = new SkillDocumentHastSet { Id = 1, NameSkillParent = "cool", }; using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); context.AddUpdateDocument(testSkillParentObject, testSkillParentObject.Id); // Save to Elasticsearch var ret = context.SaveChanges(); Assert.Equal(ret.Status, HttpStatusCode.OK); var roundTripResult = context.GetDocument <SkillDocumentHastSet>(testSkillParentObject.Id); Assert.Equal(roundTripResult.NameSkillParent, testSkillParentObject.NameSkillParent); } }
public void TestDefaultContextParentNestedIntCollectionEqualsNull() { using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); var skillWithIntArray = new SkillWithIntCollection { BlahBlah = "test with no int array", Id = 3 }; context.AddUpdateDocument(skillWithIntArray, skillWithIntArray.Id); // Save to Elasticsearch var ret = context.SaveChanges(); Assert.Equal(ret.Status, HttpStatusCode.OK); var returned = context.GetDocument <SkillWithIntCollection>(3); Assert.Equal(skillWithIntArray.BlahBlah, returned.BlahBlah); Assert.Null(returned.MyIntArray); } }
public void TestDefaultContextParentNestedIntArray() { using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); var skillWithIntArray = new SkillWithIntArray { MyIntArray = new[] { 2, 4, 6, 99, 7 }, BlahBlah = "test3 with int array", Id = 2 }; context.AddUpdateDocument(skillWithIntArray, skillWithIntArray.Id); // Save to Elasticsearch var ret = context.SaveChanges(); Assert.Equal(ret.Status, HttpStatusCode.OK); var returned = context.GetDocument <SkillWithIntArray>(2); Assert.Equal(skillWithIntArray.MyIntArray[2], returned.MyIntArray[2]); } }
public void SearchQuerySpanMultiQueryWithRangeQuery() { var search = new Search { Query = new Query( new SpanMultiQuery( new RangeQuery("details") { GreaterThanOrEqualTo = "one" }) ) }; using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver)) { context.TraceProvider = new ConsoleTraceProvider(); Assert.True(context.IndexTypeExists <SearchTest>()); var items = context.Search <SearchTest>(search); Assert.Equal(3, items.PayloadResult.Hits.Total); } }
public void TearDown() { using (var context = new ElasticsearchContext(ConnectionString, _elasticsearchMappingResolver)) { context.AllowDeleteForIndex = true; if (context.IndexExists <TestSettingsIndex>()) { context.DeleteIndex <TestSettingsIndex>(); } if (context.IndexExists <TestDfrSimilarity>()) { context.DeleteIndex <TestDfrSimilarity>(); } if (context.IndexExists <TestBm25Similarity>()) { context.DeleteIndex <TestBm25Similarity>(); } } }