在与NEST一起评估ElasticSearch期间,我遇到了一个新问题。 问题是关于数组类型的字段以及ES中自动支持数组类型的事实。我有一个字段ProductIds,可以包含1或n个值。映射定义如下:
[…] "ProductIds" : { "type" : " integer", "store" : "yes" }, […]
如果该字段包含几个ID,则ES中的查询结果如下所示:
ProductIds: [ 1, 2 ]
数组类型是自动的,如果它只包含一个值,则字段如下所示:
ProductIds: 1
这种情况会导致以下问题:
我有一个Nest-query,它映射到某个类。在这个类中,属性ProductIds被定义为List<int>
(我也尝试使用整数数组)。只要存在多个值,这就完美无缺。如果该字段在ES中仅包含单个值,则将其另存为基本数据类型。这导致Newtonsoft.JSON错误:
连接错误。 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属性,JsonConverter propertyConverter,JsonContainerContract containerContract,JsonProperty containerProperty,JsonReader reader,Object target)
那么有什么建议如何解决这个问题? TIA
答案 0 :(得分:4)
您不是第一个遇到此问题的解决方案: https://github.com/Mpdreamz/NEST/issues/227#issuecomment-16550076
计划在NEST开箱即用。