From 6dca2455d4b3012f57231edee656fa44754ad91d Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Tue, 19 Jun 2018 12:54:28 +0300 Subject: [PATCH 01/10] added LongRangeQuery --- .../Container/QueryContainerDescriptor.cs | 3 + src/Nest/QueryDsl/Query.cs | 6 +- .../TermLevel/Range/NumericRangeQuery.cs | 64 +++++++++++++++++++ 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/src/Nest/QueryDsl/Abstractions/Container/QueryContainerDescriptor.cs b/src/Nest/QueryDsl/Abstractions/Container/QueryContainerDescriptor.cs index d34a000d865..40c880d03d1 100644 --- a/src/Nest/QueryDsl/Abstractions/Container/QueryContainerDescriptor.cs +++ b/src/Nest/QueryDsl/Abstractions/Container/QueryContainerDescriptor.cs @@ -138,6 +138,9 @@ public QueryContainer Conditionless(Func, ICondi public QueryContainer Range(Func, INumericRangeQuery> selector) => WrapInContainer(selector, (query, container) => container.Range = query); + public QueryContainer LongRange(Func, ILongRangeQuery> selector) => + WrapInContainer(selector, (query, container) => container.Range = query); + /// /// Matches documents with fields that have terms within a certain date range. /// diff --git a/src/Nest/QueryDsl/Query.cs b/src/Nest/QueryDsl/Query.cs index 4afdff2c3e6..9ad39f9431d 100644 --- a/src/Nest/QueryDsl/Query.cs +++ b/src/Nest/QueryDsl/Query.cs @@ -125,6 +125,9 @@ public static QueryContainer QueryString(Func, IQu public static QueryContainer Range(Func, INumericRangeQuery> selector) => new QueryContainerDescriptor().Range(selector); + public static QueryContainer LongRange(Func, ILongRangeQuery> selector) => + new QueryContainerDescriptor().LongRange(selector); + public static QueryContainer Regexp(Func, IRegexpQuery> selector) => new QueryContainerDescriptor().Regexp(selector); @@ -176,9 +179,6 @@ public static QueryContainer TermRange(Func, ITermRa public static QueryContainer Terms(Func, ITermsQuery> selector) => new QueryContainerDescriptor().Terms(selector); - public static QueryContainer TermsSet(Func, ITermsSetQuery> selector) => - new QueryContainerDescriptor().TermsSet(selector); - public static QueryContainer Type(Func selector) => new QueryContainerDescriptor().Type(selector); diff --git a/src/Nest/QueryDsl/TermLevel/Range/NumericRangeQuery.cs b/src/Nest/QueryDsl/TermLevel/Range/NumericRangeQuery.cs index 40d61e526cd..a95a49ec4ee 100644 --- a/src/Nest/QueryDsl/TermLevel/Range/NumericRangeQuery.cs +++ b/src/Nest/QueryDsl/TermLevel/Range/NumericRangeQuery.cs @@ -20,6 +20,24 @@ public interface INumericRangeQuery : IRangeQuery RangeRelation? Relation { get; set; } } + public interface ILongRangeQuery : IRangeQuery + { + [JsonProperty("gte")] + long? GreaterThanOrEqualTo { get; set; } + + [JsonProperty("lte")] + long? LessThanOrEqualTo { get; set; } + + [JsonProperty("gt")] + long? GreaterThan { get; set; } + + [JsonProperty("lt")] + long? LessThan { get; set; } + + [JsonProperty("relation")] + RangeRelation? Relation { get; set; } + } + public class NumericRangeQuery : FieldNameQueryBase, INumericRangeQuery { protected override bool Conditionless => IsConditionless(this); @@ -42,6 +60,29 @@ internal static bool IsConditionless(INumericRangeQuery q) } } + public class LongRangeQuery : FieldNameQueryBase, ILongRangeQuery + { + protected override bool Conditionless => IsConditionless(this); + public long? GreaterThanOrEqualTo { get; set; } + public long? LessThanOrEqualTo { get; set; } + public long? GreaterThan { get; set; } + public long? LessThan { get; set; } + + public RangeRelation? Relation { get; set; } + + internal override void InternalWrapInContainer(IQueryContainer c) => c.Range = this; + + internal static bool IsConditionless(ILongRangeQuery q) + { + return q.Field.IsConditionless() + || (q.GreaterThanOrEqualTo == null + && q.LessThanOrEqualTo == null + && q.GreaterThan == null + && q.LessThan == null); + } + } + + [JsonObject(MemberSerialization = MemberSerialization.OptIn)] public class NumericRangeQueryDescriptor : FieldNameQueryDescriptorBase, INumericRangeQuery, T> @@ -52,6 +93,7 @@ public class NumericRangeQueryDescriptor double? INumericRangeQuery.LessThanOrEqualTo { get; set; } double? INumericRangeQuery.GreaterThan { get; set; } double? INumericRangeQuery.LessThan { get; set; } + RangeRelation? INumericRangeQuery.Relation{ get; set; } public NumericRangeQueryDescriptor GreaterThan(double? from) => Assign(a => a.GreaterThan = from); @@ -64,4 +106,26 @@ public class NumericRangeQueryDescriptor public NumericRangeQueryDescriptor Relation(RangeRelation? relation) => Assign(a => a.Relation = relation); } + + public class LongRangeQueryDescriptor + : FieldNameQueryDescriptorBase, ILongRangeQuery, T> + , ILongRangeQuery where T : class + { + protected override bool Conditionless => LongRangeQuery.IsConditionless(this); + long? ILongRangeQuery.GreaterThanOrEqualTo { get; set; } + long? ILongRangeQuery.LessThanOrEqualTo { get; set; } + long? ILongRangeQuery.GreaterThan { get; set; } + long? ILongRangeQuery.LessThan { get; set; } + RangeRelation? ILongRangeQuery.Relation { get; set; } + + public LongRangeQueryDescriptor Relation(RangeRelation? relation) => Assign(a => a.Relation = relation); + + public LongRangeQueryDescriptor GreaterThan(long? from) => Assign(a => a.GreaterThan = from); + + public LongRangeQueryDescriptor GreaterThanOrEquals(long? from) => Assign(a => a.GreaterThanOrEqualTo = from); + + public LongRangeQueryDescriptor LessThan(long? to) => Assign(a => a.LessThan = to); + + public LongRangeQueryDescriptor LessThanOrEquals(long? to) => Assign(a => a.LessThanOrEqualTo = to); + } } From 51d75897db7ebc764abce4a015f3fb5d0dfe4fdf Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Tue, 19 Jun 2018 16:44:10 +0300 Subject: [PATCH 02/10] moved LongRangeQuery in LongRangeQuery.cs and added tests --- .../TermLevel/Range/LongRangeQuery.cs | 66 +++++++++++++++++++ .../TermLevel/Range/NumericRangeQuery.cs | 63 ------------------ .../Range/LongRangeQueryUsageTests.cs | 65 ++++++++++++++++++ 3 files changed, 131 insertions(+), 63 deletions(-) create mode 100644 src/Nest/QueryDsl/TermLevel/Range/LongRangeQuery.cs create mode 100644 src/Tests/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs diff --git a/src/Nest/QueryDsl/TermLevel/Range/LongRangeQuery.cs b/src/Nest/QueryDsl/TermLevel/Range/LongRangeQuery.cs new file mode 100644 index 00000000000..5b03f84aa95 --- /dev/null +++ b/src/Nest/QueryDsl/TermLevel/Range/LongRangeQuery.cs @@ -0,0 +1,66 @@ +using Newtonsoft.Json; + +namespace Nest +{ + public interface ILongRangeQuery : IRangeQuery + { + [JsonProperty("gte")] + long? GreaterThanOrEqualTo { get; set; } + + [JsonProperty("lte")] + long? LessThanOrEqualTo { get; set; } + + [JsonProperty("gt")] + long? GreaterThan { get; set; } + + [JsonProperty("lt")] + long? LessThan { get; set; } + + [JsonProperty("relation")] + RangeRelation? Relation { get; set; } + } + + public class LongRangeQuery : FieldNameQueryBase, ILongRangeQuery + { + protected override bool Conditionless => IsConditionless(this); + public long? GreaterThanOrEqualTo { get; set; } + public long? LessThanOrEqualTo { get; set; } + public long? GreaterThan { get; set; } + public long? LessThan { get; set; } + + public RangeRelation? Relation { get; set; } + + internal override void InternalWrapInContainer(IQueryContainer c) => c.Range = this; + + internal static bool IsConditionless(ILongRangeQuery q) + { + return q.Field.IsConditionless() + || (q.GreaterThanOrEqualTo == null + && q.LessThanOrEqualTo == null + && q.GreaterThan == null + && q.LessThan == null); + } + } + + public class LongRangeQueryDescriptor + : FieldNameQueryDescriptorBase, ILongRangeQuery, T> + , ILongRangeQuery where T : class + { + protected override bool Conditionless => LongRangeQuery.IsConditionless(this); + long? ILongRangeQuery.GreaterThanOrEqualTo { get; set; } + long? ILongRangeQuery.LessThanOrEqualTo { get; set; } + long? ILongRangeQuery.GreaterThan { get; set; } + long? ILongRangeQuery.LessThan { get; set; } + RangeRelation? ILongRangeQuery.Relation { get; set; } + + public LongRangeQueryDescriptor Relation(RangeRelation? relation) => Assign(a => a.Relation = relation); + + public LongRangeQueryDescriptor GreaterThan(long? from) => Assign(a => a.GreaterThan = from); + + public LongRangeQueryDescriptor GreaterThanOrEquals(long? from) => Assign(a => a.GreaterThanOrEqualTo = from); + + public LongRangeQueryDescriptor LessThan(long? to) => Assign(a => a.LessThan = to); + + public LongRangeQueryDescriptor LessThanOrEquals(long? to) => Assign(a => a.LessThanOrEqualTo = to); + } +} diff --git a/src/Nest/QueryDsl/TermLevel/Range/NumericRangeQuery.cs b/src/Nest/QueryDsl/TermLevel/Range/NumericRangeQuery.cs index a95a49ec4ee..be86363fd2e 100644 --- a/src/Nest/QueryDsl/TermLevel/Range/NumericRangeQuery.cs +++ b/src/Nest/QueryDsl/TermLevel/Range/NumericRangeQuery.cs @@ -20,24 +20,6 @@ public interface INumericRangeQuery : IRangeQuery RangeRelation? Relation { get; set; } } - public interface ILongRangeQuery : IRangeQuery - { - [JsonProperty("gte")] - long? GreaterThanOrEqualTo { get; set; } - - [JsonProperty("lte")] - long? LessThanOrEqualTo { get; set; } - - [JsonProperty("gt")] - long? GreaterThan { get; set; } - - [JsonProperty("lt")] - long? LessThan { get; set; } - - [JsonProperty("relation")] - RangeRelation? Relation { get; set; } - } - public class NumericRangeQuery : FieldNameQueryBase, INumericRangeQuery { protected override bool Conditionless => IsConditionless(this); @@ -60,29 +42,6 @@ internal static bool IsConditionless(INumericRangeQuery q) } } - public class LongRangeQuery : FieldNameQueryBase, ILongRangeQuery - { - protected override bool Conditionless => IsConditionless(this); - public long? GreaterThanOrEqualTo { get; set; } - public long? LessThanOrEqualTo { get; set; } - public long? GreaterThan { get; set; } - public long? LessThan { get; set; } - - public RangeRelation? Relation { get; set; } - - internal override void InternalWrapInContainer(IQueryContainer c) => c.Range = this; - - internal static bool IsConditionless(ILongRangeQuery q) - { - return q.Field.IsConditionless() - || (q.GreaterThanOrEqualTo == null - && q.LessThanOrEqualTo == null - && q.GreaterThan == null - && q.LessThan == null); - } - } - - [JsonObject(MemberSerialization = MemberSerialization.OptIn)] public class NumericRangeQueryDescriptor : FieldNameQueryDescriptorBase, INumericRangeQuery, T> @@ -106,26 +65,4 @@ public class NumericRangeQueryDescriptor public NumericRangeQueryDescriptor Relation(RangeRelation? relation) => Assign(a => a.Relation = relation); } - - public class LongRangeQueryDescriptor - : FieldNameQueryDescriptorBase, ILongRangeQuery, T> - , ILongRangeQuery where T : class - { - protected override bool Conditionless => LongRangeQuery.IsConditionless(this); - long? ILongRangeQuery.GreaterThanOrEqualTo { get; set; } - long? ILongRangeQuery.LessThanOrEqualTo { get; set; } - long? ILongRangeQuery.GreaterThan { get; set; } - long? ILongRangeQuery.LessThan { get; set; } - RangeRelation? ILongRangeQuery.Relation { get; set; } - - public LongRangeQueryDescriptor Relation(RangeRelation? relation) => Assign(a => a.Relation = relation); - - public LongRangeQueryDescriptor GreaterThan(long? from) => Assign(a => a.GreaterThan = from); - - public LongRangeQueryDescriptor GreaterThanOrEquals(long? from) => Assign(a => a.GreaterThanOrEqualTo = from); - - public LongRangeQueryDescriptor LessThan(long? to) => Assign(a => a.LessThan = to); - - public LongRangeQueryDescriptor LessThanOrEquals(long? to) => Assign(a => a.LessThanOrEqualTo = to); - } } diff --git a/src/Tests/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs b/src/Tests/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs new file mode 100644 index 00000000000..af2d7ee22ae --- /dev/null +++ b/src/Tests/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs @@ -0,0 +1,65 @@ +using Nest; +using Tests.Framework.Integration; +using Tests.Framework.ManagedElasticsearch.Clusters; +using Tests.Framework.MockData; + +namespace Tests.QueryDsl.TermLevel.Range +{ + public class LongRangeQueryUsageTests : QueryDslUsageTestsBase + { + public LongRangeQueryUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cluster, usage) {} + + protected override object QueryJson => new + { + range = new + { + description = new + { + _name = "named_query", + boost = 1.1, + gt = 636634079999999999, + gte = 636634080000000000, + lt = 636634080000000000, + lte = 636634079999999999, + relation = "within" + } + } + }; + + protected override QueryContainer QueryInitializer => new LongRangeQuery + { + Name = "named_query", + Boost = 1.1, + Field = "description", + GreaterThan = 636634079999999999, + GreaterThanOrEqualTo = 636634080000000000, + LessThan = 636634080000000000, + LessThanOrEqualTo = 636634079999999999, + Relation = RangeRelation.Within + }; + + protected override QueryContainer QueryFluent(QueryContainerDescriptor q) => q + .Range(c => c + .Name("named_query") + .Boost(1.1) + .Field(p => p.Description) + .GreaterThan(636634079999999999) + .GreaterThanOrEquals(636634080000000000) + .LessThan(636634079999999999) + .LessThanOrEquals(636634079999999999) + .Relation(RangeRelation.Within) + ); + + protected override ConditionlessWhen ConditionlessWhen => new ConditionlessWhen(q => q.Range as ILongRangeQuery) + { + q=> q.Field = null, + q=> + { + q.GreaterThan = null; + q.GreaterThanOrEqualTo = null; + q.LessThan = null; + q.LessThanOrEqualTo = null; + } + }; + } +} From 216607258ce4ac7e599777eb820b02c34deed17b Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Wed, 20 Jun 2018 11:06:06 +0300 Subject: [PATCH 03/10] added VisitQuery --- src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs | 4 +++- src/Nest/QueryDsl/Visitor/QueryVisitor.cs | 5 ++++- src/Nest/QueryDsl/Visitor/QueryWalker.cs | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs b/src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs index 9e1cea4039e..10a65bb5c71 100644 --- a/src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs +++ b/src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs @@ -79,7 +79,9 @@ private void Write(string queryType, Field field = null) public virtual void Visit(INumericRangeQuery query) => Write("numeric_range"); - public virtual void Visit(ITermRangeQuery query) => Write("term_range"); + public virtual void Visit(ILongRangeQuery query) => Write("numeric_range"); + + public virtual void Visit(ITermRangeQuery query) => Write("term_range"); public virtual void Visit(IFunctionScoreQuery query) => Write("function_core"); diff --git a/src/Nest/QueryDsl/Visitor/QueryVisitor.cs b/src/Nest/QueryDsl/Visitor/QueryVisitor.cs index 7174f4fca99..1f4c1d8c74a 100644 --- a/src/Nest/QueryDsl/Visitor/QueryVisitor.cs +++ b/src/Nest/QueryDsl/Visitor/QueryVisitor.cs @@ -61,6 +61,7 @@ public interface IQueryVisitor void Visit(IExistsQuery query); void Visit(IDateRangeQuery query); void Visit(INumericRangeQuery query); + void Visit(ILongRangeQuery query); void Visit(ITermRangeQuery query); void Visit(ISpanFirstQuery query); void Visit(ISpanNearQuery query); @@ -123,7 +124,9 @@ public virtual void Visit(IDateRangeQuery query) { } public virtual void Visit(INumericRangeQuery query) { } - public virtual void Visit(ITermRangeQuery query) { } + public virtual void Visit(ILongRangeQuery query) { } + + public virtual void Visit(ITermRangeQuery query) { } public virtual void Visit(IFunctionScoreQuery query) { } diff --git a/src/Nest/QueryDsl/Visitor/QueryWalker.cs b/src/Nest/QueryDsl/Visitor/QueryWalker.cs index 2ea529727d9..284fd984e0f 100644 --- a/src/Nest/QueryDsl/Visitor/QueryWalker.cs +++ b/src/Nest/QueryDsl/Visitor/QueryWalker.cs @@ -26,6 +26,7 @@ public void Walk(IQueryContainer qd, IQueryVisitor visitor) v.Visit(d); VisitQuery(d as IDateRangeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as INumericRangeQuery, visitor, (vv, dd) => v.Visit(dd)); + VisitQuery(d as ILongRangeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as ITermRangeQuery, visitor, (vv, dd) => v.Visit(dd)); }); VisitQuery(qd.GeoShape, visitor, (v, d) => From 1020933b62b6209b4fca479dc813c1bbb048ac34 Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Wed, 20 Jun 2018 11:06:16 +0300 Subject: [PATCH 04/10] test fix --- .../QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Tests/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs b/src/Tests/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs index af2d7ee22ae..dc313e36fbe 100644 --- a/src/Tests/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs +++ b/src/Tests/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.cs @@ -39,13 +39,13 @@ public LongRangeQueryUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : }; protected override QueryContainer QueryFluent(QueryContainerDescriptor q) => q - .Range(c => c + .LongRange(c => c .Name("named_query") .Boost(1.1) .Field(p => p.Description) .GreaterThan(636634079999999999) .GreaterThanOrEquals(636634080000000000) - .LessThan(636634079999999999) + .LessThan(636634080000000000) .LessThanOrEquals(636634079999999999) .Relation(RangeRelation.Within) ); From a3e493b2864d21c061cb37bfa80ea27c03f871ce Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Wed, 20 Jun 2018 12:15:39 +0300 Subject: [PATCH 05/10] RangeQueryJsonConverter fix: added support for long deserealization --- .../TermLevel/Range/LongRangeQuery.cs | 1 + .../Range/RangeQueryJsonConverter.cs | 27 ++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/Nest/QueryDsl/TermLevel/Range/LongRangeQuery.cs b/src/Nest/QueryDsl/TermLevel/Range/LongRangeQuery.cs index 5b03f84aa95..640345d9a0f 100644 --- a/src/Nest/QueryDsl/TermLevel/Range/LongRangeQuery.cs +++ b/src/Nest/QueryDsl/TermLevel/Range/LongRangeQuery.cs @@ -42,6 +42,7 @@ internal static bool IsConditionless(ILongRangeQuery q) } } + [JsonObject(MemberSerialization = MemberSerialization.OptIn)] public class LongRangeQueryDescriptor : FieldNameQueryDescriptorBase, ILongRangeQuery, T> , ILongRangeQuery where T : class diff --git a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs index b30ea6a9779..12f85e39021 100644 --- a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs +++ b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs @@ -26,25 +26,40 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist var jo = firstProp.Value.Value(); if (jo == null) return null; + var fq = GetRangeQuery(serializer, jo); - var isNumeric = !jo.Properties().Any(p=>p.Name == "format" || p.Name == "time_zone") - && jo.Properties().Any(p=> _rangeKeys.Contains(p.Name) && (p.Value.Type == JTokenType.Integer || p.Value.Type == JTokenType.Float)); + fq.Name = GetPropValue(jo, "_name"); + fq.Boost = GetPropValue(jo, "boost"); + fq.Field = field; + + return fq; + } + + private static IRangeQuery GetRangeQuery(JsonSerializer serializer, JObject jo) + { + var isLong = !jo.Properties().Any(p => p.Name == "format" || p.Name == "time_zone") + && jo.Properties().Any(p => _rangeKeys.Contains(p.Name) && p.Value.Type == JTokenType.Integer); + var isNumeric = !jo.Properties().Any(p => p.Name == "format" || p.Name == "time_zone") + && jo.Properties().Any(p => + _rangeKeys.Contains(p.Name) && + p.Value.Type == JTokenType.Float); IRangeQuery fq; + if (isNumeric) { fq = FromJson.ReadAs(jo.CreateReader(), serializer); } + else if (isLong) + { + fq = FromJson.ReadAs(jo.CreateReader(), serializer); + } else { fq = FromJson.ReadAs(jo.CreateReader(), serializer); } - fq.Name = GetPropValue(jo, "_name"); - fq.Boost = GetPropValue(jo, "boost"); - fq.Field = field; - return fq; } From 6686482af16f218353787684ea64f6cb0782ae22 Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Wed, 20 Jun 2018 15:27:35 +0300 Subject: [PATCH 06/10] returned method TermsSet --- src/Nest/QueryDsl/Query.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Nest/QueryDsl/Query.cs b/src/Nest/QueryDsl/Query.cs index 9ad39f9431d..ce6289aff73 100644 --- a/src/Nest/QueryDsl/Query.cs +++ b/src/Nest/QueryDsl/Query.cs @@ -179,6 +179,9 @@ public static QueryContainer TermRange(Func, ITermRa public static QueryContainer Terms(Func, ITermsQuery> selector) => new QueryContainerDescriptor().Terms(selector); + public static QueryContainer TermsSet(Func, ITermsSetQuery> selector) => + new QueryContainerDescriptor().TermsSet(selector); + public static QueryContainer Type(Func selector) => new QueryContainerDescriptor().Type(selector); From 24b1793a8a74107ebe513d017fa60fd030b73a43 Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Mon, 20 Aug 2018 14:22:44 +0300 Subject: [PATCH 07/10] review fixes --- .../TermLevel/Range/RangeQueryJsonConverter.cs | 16 ++++++++++------ .../QueryDsl/Visitor/DslPrettyPrintVisitor.cs | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs index 12f85e39021..04d7f0dc6a9 100644 --- a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs +++ b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs @@ -37,13 +37,10 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist private static IRangeQuery GetRangeQuery(JsonSerializer serializer, JObject jo) { - var isLong = !jo.Properties().Any(p => p.Name == "format" || p.Name == "time_zone") - && jo.Properties().Any(p => _rangeKeys.Contains(p.Name) && p.Value.Type == JTokenType.Integer); + var nameIsValid = !jo.Properties().Any(p => p.Name == "format" || p.Name == "time_zone"); - var isNumeric = !jo.Properties().Any(p => p.Name == "format" || p.Name == "time_zone") - && jo.Properties().Any(p => - _rangeKeys.Contains(p.Name) && - p.Value.Type == JTokenType.Float); + var isLong = nameIsValid && CheckType(jo, JTokenType.Integer); + var isNumeric = nameIsValid && CheckType(jo, JTokenType.Float); IRangeQuery fq; @@ -63,6 +60,13 @@ private static IRangeQuery GetRangeQuery(JsonSerializer serializer, JObject jo) return fq; } + private static bool CheckType(JObject jo, JTokenType jTokenType) + { + return jo.Properties().Any(p => + _rangeKeys.Contains(p.Name) && + p.Value.Type == jTokenType); + } + private static TReturn GetPropValue(JObject jObject, string field) { JToken jToken = null; diff --git a/src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs b/src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs index 10a65bb5c71..35f3012e561 100644 --- a/src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs +++ b/src/Nest/QueryDsl/Visitor/DslPrettyPrintVisitor.cs @@ -79,7 +79,7 @@ private void Write(string queryType, Field field = null) public virtual void Visit(INumericRangeQuery query) => Write("numeric_range"); - public virtual void Visit(ILongRangeQuery query) => Write("numeric_range"); + public virtual void Visit(ILongRangeQuery query) => Write("long_range"); public virtual void Visit(ITermRangeQuery query) => Write("term_range"); From 78d918b7db7440249e57c5db8447fbed8590d8b8 Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Thu, 23 Aug 2018 14:55:14 +0300 Subject: [PATCH 08/10] simplified GetRangeQuery --- .../Range/RangeQueryJsonConverter.cs | 40 ++++++++----------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs index 04d7f0dc6a9..38a568375c2 100644 --- a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs +++ b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs @@ -37,36 +37,30 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist private static IRangeQuery GetRangeQuery(JsonSerializer serializer, JObject jo) { - var nameIsValid = !jo.Properties().Any(p => p.Name == "format" || p.Name == "time_zone"); + IRangeQuery fq = FromJson.ReadAs(jo.CreateReader(), serializer); + var isNumeric = false; + var isLong = false; - var isLong = nameIsValid && CheckType(jo, JTokenType.Integer); - var isNumeric = nameIsValid && CheckType(jo, JTokenType.Float); - - IRangeQuery fq; - - if (isNumeric) + foreach (var property in jo.Properties()) { - fq = FromJson.ReadAs(jo.CreateReader(), serializer); - } - else if (isLong) - { - fq = FromJson.ReadAs(jo.CreateReader(), serializer); - } - else - { - fq = FromJson.ReadAs(jo.CreateReader(), serializer); + if (property.Name == "format" || property.Name == "time_zone") + return fq; + if (_rangeKeys.Contains(property.Name)) + { + if (property.Value.Type == JTokenType.Float) + isNumeric = true; + else if (property.Value.Type == JTokenType.Integer) + isLong = true; + } } + if (isNumeric) + return FromJson.ReadAs(jo.CreateReader(), serializer); + if (isLong) + return FromJson.ReadAs(jo.CreateReader(), serializer); return fq; } - private static bool CheckType(JObject jo, JTokenType jTokenType) - { - return jo.Properties().Any(p => - _rangeKeys.Contains(p.Name) && - p.Value.Type == jTokenType); - } - private static TReturn GetPropValue(JObject jObject, string field) { JToken jToken = null; From 958118c00404cc26d27285f8463982b4960e7bb5 Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Tue, 4 Sep 2018 17:34:23 +0300 Subject: [PATCH 09/10] fq initialization fix --- src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs index 38a568375c2..223541090a1 100644 --- a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs +++ b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs @@ -37,14 +37,13 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist private static IRangeQuery GetRangeQuery(JsonSerializer serializer, JObject jo) { - IRangeQuery fq = FromJson.ReadAs(jo.CreateReader(), serializer); var isNumeric = false; var isLong = false; foreach (var property in jo.Properties()) { if (property.Name == "format" || property.Name == "time_zone") - return fq; + return FromJson.ReadAs(jo.CreateReader(), serializer); if (_rangeKeys.Contains(property.Name)) { if (property.Value.Type == JTokenType.Float) @@ -58,7 +57,7 @@ private static IRangeQuery GetRangeQuery(JsonSerializer serializer, JObject jo) if (isLong) return FromJson.ReadAs(jo.CreateReader(), serializer); - return fq; + return null; } private static TReturn GetPropValue(JObject jObject, string field) From b4fbbb3be70b31fbc5242464b3f6c80d1dcc36be Mon Sep 17 00:00:00 2001 From: Anna Shlyak Date: Wed, 5 Sep 2018 10:03:39 +0300 Subject: [PATCH 10/10] fix --- src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs index 223541090a1..1f5aa9dc11b 100644 --- a/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs +++ b/src/Nest/QueryDsl/TermLevel/Range/RangeQueryJsonConverter.cs @@ -57,7 +57,7 @@ private static IRangeQuery GetRangeQuery(JsonSerializer serializer, JObject jo) if (isLong) return FromJson.ReadAs(jo.CreateReader(), serializer); - return null; + return FromJson.ReadAs(jo.CreateReader(), serializer); } private static TReturn GetPropValue(JObject jObject, string field)