Skip to content

Commit 82f07df

Browse files
[Backport master] Implement unsigned long numeric field (#5278)
* Implement unsigned long (#5275) * test fixup Co-authored-by: Steve Gordon <sgordon@hotmail.co.uk>
1 parent 0c823ca commit 82f07df

File tree

4 files changed

+54
-1
lines changed

4 files changed

+54
-1
lines changed

src/Nest/Mapping/Types/Core/Number/NumberType.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ public enum NumberType
3434
Short,
3535

3636
[EnumMember(Value = "byte")]
37-
Byte
37+
Byte,
38+
39+
[EnumMember(Value = "unsigned_long")]
40+
UnsignedLong
3841
}
3942

4043
internal static class NumberTypeExtensions
@@ -51,6 +54,7 @@ public static FieldType ToFieldType(this NumberType numberType)
5154
case NumberType.Long: return FieldType.Long;
5255
case NumberType.Short: return FieldType.Short;
5356
case NumberType.Byte: return FieldType.Byte;
57+
case NumberType.UnsignedLong: return FieldType.UnsignedLong;
5458
default:
5559
throw new ArgumentOutOfRangeException(nameof(numberType), numberType, null);
5660
}

src/Nest/Mapping/Types/FieldType.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ public enum FieldType
8989
[EnumMember(Value = "long")]
9090
Long,
9191

92+
[EnumMember(Value = "unsigned_long")]
93+
UnsignedLong,
94+
9295
[EnumMember(Value = "short")]
9396
Short,
9497

src/Nest/Mapping/Types/PropertyFormatter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public IProperty Deserialize(ref JsonReader reader, IJsonFormatterResolver forma
6565
case FieldType.Long:
6666
case FieldType.ScaledFloat:
6767
case FieldType.HalfFloat:
68+
case FieldType.UnsignedLong:
6869
var numberProperty = Deserialize<NumberProperty>(ref segmentReader, formatterResolver);
6970
((IProperty)numberProperty).Type = typeString;
7071
return numberProperty;

tests/Tests/Mapping/Types/Core/Number/NumberPropertyTests.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// See the LICENSE file in the project root for more information
44

55
using System;
6+
using Elastic.Elasticsearch.Xunit.XunitPlumbing;
67
using Nest;
78
using Tests.Core.ManagedElasticsearch.Clusters;
89
using Tests.Domain;
@@ -112,4 +113,48 @@ public ScaledFloatNumberPropertyTests(WritableCluster cluster, EndpointUsage usa
112113
}
113114
};
114115
}
116+
117+
[SkipVersion("<7.10.0", "Introduced in 7.10.0")]
118+
public class UnsignedLongNumberPropertyTests : PropertyTestsBase
119+
{
120+
public UnsignedLongNumberPropertyTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
121+
122+
protected override object ExpectJson => new
123+
{
124+
properties = new
125+
{
126+
numberOfCommits = new
127+
{
128+
type = "unsigned_long",
129+
doc_values = true,
130+
store = true,
131+
index = false,
132+
ignore_malformed = true
133+
}
134+
}
135+
};
136+
137+
protected override Func<PropertiesDescriptor<Project>, IPromise<IProperties>> FluentProperties => f => f
138+
.Number(n => n
139+
.Name(p => p.NumberOfCommits)
140+
.Type(NumberType.UnsignedLong)
141+
.DocValues()
142+
.Store()
143+
.Index(false)
144+
.IgnoreMalformed()
145+
);
146+
147+
protected override IProperties InitializerProperties => new Properties
148+
{
149+
{
150+
"numberOfCommits", new NumberProperty(NumberType.UnsignedLong)
151+
{
152+
DocValues = true,
153+
Store = true,
154+
Index = false,
155+
IgnoreMalformed = true
156+
}
157+
}
158+
};
159+
}
115160
}

0 commit comments

Comments
 (0)