public void TermsAggregation_RangeAggregation_FromHelper() { var agg = AggregationsHelper.RangeAggregation <Event, double?>(x => x.Duration, new RangeAggrValue <double?> { From = 2 * 60, Key = "Above120" }); agg.Aggregations = new Dictionary <string, IAggregation>(); agg.CardinalityAggregation <Event>(ci => ci.AssetGuid).TopHitsAggregation(ParameterHelper.Sort( new KeyValuePair <Expression <Func <Event, object> >, AggsOrderDirection>(ic => ic.Start, AggsOrderDirection.Desc)), ParameterHelper.Excludes <Event>(ic => ic.StSrid)); var termsAgg = AggregationsHelper.TermsAggregation <Event>(x => x.AssetGuid, 1000, null, agg, AggregationsHelper.BucketSelector("count", "nested._bucket_count", "params.count > 0")); var q2 = new Query <Event>().Match("EarthFault", e => e.Type) .DateHistogramAggregation(x => x.Start, "week", 1, termsAgg) .SetSize(0); var nested = q2.Aggregations.FirstOrDefault().Value.Aggregations.FirstOrDefault().Value.Aggregations.FirstOrDefault().Key; var n = q2.Aggregations.FirstOrDefault().Value.Aggregations.FirstOrDefault().Key; Assert.AreEqual("nested", nested); Assert.AreEqual("nested", n); }
public void Aggregations_Nested_Terms_Range() { var q1 = new Query <IndexedClass>().NestedAggregation( ic => ic.Children, AggregationsHelper.TermsAggregation <IndexedClass>(x => x.Children.PropertyName(p => p.AString), 10, new AggsOrder(AggsOrderBy.Key, AggsOrderDirection.Desc), AggregationsHelper.SumAggregation <IndexedClass>(sum => sum.SomeNumber)), AggregationsHelper.RangeAggregation <IndexedClass, int?>( x => x.Children.PropertyName(p => p.SomeNumber), new RangeAggrValue <int?> { Key = "SomeKey", To = 24 }), AggregationsHelper.RangeAggregation <IndexedClass, int?>( x => x.Children.PropertyName(p => p.SomeNumber), new RangeAggrValue <int?> { Key = "SomeKey1", To = 12, }, new RangeAggrValue <int?> { Key = "SomeKey2", From = 31, }) ); var json = q1.ToJson(); Assert.AreEqual( "{\"query\":{\"bool\":{\"should\":[{\"type\":{\"value\":\"h73.Elastic.Search.Tests.IndexedClass\"}},{\"type\":{\"value\":\"h73.Elastic.Search.Tests.InheritedGenericIndexedClass`1\"}},{\"type\":{\"value\":\"h73.Elastic.Search.Tests.InheritedIndexedClass\"}}],\"minimum_should_match\":1}},\"aggs\":{\"nested_Children_0\":{\"nested\":{\"path\":\"Children\"},\"aggs\":{\"nested\":{\"terms\":{\"field\":\"Children.AString\",\"size\":10,\"order\":{\"_key\":\"desc\"}},\"aggs\":{\"Sum\":{\"sum\":{\"field\":\"SomeNumber\"}},\"nested\":{\"range\":{\"ranges\":[{\"key\":\"SomeKey\",\"to\":24}],\"field\":\"Children.SomeNumber\"},\"aggs\":{\"nested\":{\"range\":{\"ranges\":[{\"key\":\"SomeKey1\",\"to\":12},{\"key\":\"SomeKey2\",\"from\":31}],\"field\":\"Children.SomeNumber\"}}}}}}}}}}", json); }
public void AddCardinalityAggregation_FromHelper() { var term = AggregationsHelper.TermsAggregation <IndexedClass>(ic => ic.AString); Assert.IsNull(term.Aggregations); term.AddCardinalityAggregation <IndexedClass>(ic => ic.AString); Assert.IsNotNull(term.Aggregations); }
public void FilterAggregation_FromHelper() { var term = AggregationsHelper.TermsAggregation <Event>(ic => ic.Type); var filter = new Query <Event>(true).Match("EarthFault", e => e.Type).CreateBooleanQueryRoot(); var filter1 = new Query <Event>(true).Match("EarthFault1", e => e.Type).CreateBooleanQueryRoot(); Assert.IsNull(term.Aggregations); term.FilterAggregation <Event>(filter); term.FilterAggregation <Event>(filter1); var json = "{\"terms\":{\"field\":\"Type\"},\"aggs\":{\"agg_filter_0\":{\"filter\":{\"bool\":{\"must\":" + "[{\"match\":{\"Type\":\"EarthFault\"}}]}}},\"agg_filter_1\":{\"filter\":{\"bool\":{\"must\":[{\"match\":{\"Type\":\"EarthFault1\"}}]}}}}}"; Assert.AreEqual(json, term.ToJson()); }