Skip to content

Commit aa8c993

Browse files
committed
Correctly infer the Elasticsearch type from the CLR type
This fixes discrepancies between how C# types compare to Java types as documented in https://msdn.microsoft.com/en-us/library/ms228360(v=vs.90).aspx and https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html. Fixes issue #1643 Add additional unit tests for inferred types
1 parent 5ef08f6 commit aa8c993

File tree

3 files changed

+72
-34
lines changed

3 files changed

+72
-34
lines changed

Diff for: src/Nest/Resolvers/Writers/TypeMappingWriter.cs

+7-5
Original file line numberDiff line numberDiff line change
@@ -280,27 +280,29 @@ private string GetElasticsearchType(FieldType? fieldType)
280280
switch (propertyType.Name)
281281
{
282282
case "Int32":
283-
case "UInt32":
283+
case "UInt16":
284284
return FieldType.Integer;
285285
case "Int16":
286-
case "UInt16":
287-
return FieldType.Short;
288286
case "Byte":
287+
return FieldType.Short;
289288
case "SByte":
290289
return FieldType.Byte;
291290
case "Int64":
292-
case "UInt64":
291+
case "UInt32":
293292
return FieldType.Long;
294293
case "Single":
295294
return FieldType.Float;
296295
case "Decimal":
297296
case "Double":
297+
case "UInt64":
298298
return FieldType.Double;
299299
case "DateTime":
300+
case "DateTimeOffset":
300301
return FieldType.Date;
301302
case "Boolean":
302303
return FieldType.Boolean;
303-
case "Guid":
304+
case "Char":
305+
case "Guid":
304306
return FieldType.String;
305307
}
306308
}

Diff for: src/Tests/Nest.Tests.Unit/Core/AttributeBasedMap/AllTypesTest.cs

+11-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,17 @@ public class AllTypes
1818
public long LongField { get; set; }
1919
public float FloatField { get; set; }
2020
public double DoubleField { get; set; }
21-
public DateTime DateField { get; set; }
22-
public bool BoolField { get; set; }
21+
public decimal DecimalField { get; set; }
22+
public SByte SignedByteField { get; set; }
23+
public UInt64 UnsignedLongField { get; set; }
24+
public UInt16 UnsignedShortField { get; set; }
25+
public UInt32 UnsignedIntegerField { get; set; }
26+
public DateTime DateTimeField { get; set; }
27+
public DateTimeOffset DateTimeOffsetField { get; set; }
28+
public bool BoolField { get; set; }
29+
public string StringField { get; set; }
30+
public Guid GuidField { get; set; }
31+
public char CharField { get; set; }
2332
}
2433

2534
[Test]
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,57 @@
11
{
2-
"alltypes": {
3-
"properties": {
4-
"integerField": {
5-
"type": "integer"
6-
},
7-
"shortField": {
8-
"type": "short"
9-
},
10-
"byteField": {
11-
"type": "byte"
12-
},
13-
"longField": {
14-
"type": "long"
15-
},
16-
"floatField": {
17-
"type": "float"
18-
},
19-
"doubleField": {
20-
"type": "double"
21-
},
22-
"dateField": {
23-
"type": "date"
24-
},
25-
"boolField": {
26-
"type": "boolean"
27-
}
2+
"alltypes": {
3+
"properties": {
4+
"integerField": {
5+
"type": "integer"
6+
},
7+
"shortField": {
8+
"type": "short"
9+
},
10+
"byteField": {
11+
"type": "short"
12+
},
13+
"longField": {
14+
"type": "long"
15+
},
16+
"floatField": {
17+
"type": "float"
18+
},
19+
"doubleField": {
20+
"type": "double"
21+
},
22+
"decimalField": {
23+
"type": "double"
24+
},
25+
"signedByteField": {
26+
"type": "byte"
27+
},
28+
"unsignedLongField": {
29+
"type": "double"
30+
},
31+
"unsignedShortField": {
32+
"type": "integer"
33+
},
34+
"unsignedIntegerField": {
35+
"type": "long"
36+
},
37+
"dateTimeField": {
38+
"type": "date"
39+
},
40+
"dateTimeOffsetField": {
41+
"type": "date"
42+
},
43+
"boolField": {
44+
"type": "boolean"
45+
},
46+
"stringField": {
47+
"type": "string"
48+
},
49+
"guidField": {
50+
"type": "string"
51+
},
52+
"charField": {
53+
"type": "string"
54+
}
55+
}
2856
}
29-
}
3057
}

0 commit comments

Comments
 (0)