During the evaluation of ElasticSearch in combination with NEST I faced a new problem. The problem is regarding to fields which are array types plus the fact that array types are automatically supported in ES. I have a field ProductIds which can contain 1 or n values. The mapping is defined as following:
[…]
"ProductIds" : {
"type" : " integer",
"store" : "yes"
},
[…]
If the field contains a couple of Ids the query result in ES looks like this:
ProductIds: [
1,
2
]
The fact that array types are automatically, the field looks like this if it contains only a single value:
ProductIds: 1
This circumstances leads to the following problem:
I do have a Nest-query which is mapped to an certain class. In this class the attribute ProductIds is defined as a List<int> (I also tried it with an integer array). This works perfectly fine as long as there is more than a single value. If the field contains only a single value in ES it’s saved as a primitive data type. This leads to an error in Newtonsoft.JSON:
Connection error. at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
So any suggestions how to solve this problem? TIA