在结合 NEST 评估 ElasticSearch 时,我遇到了一个新问题。问题在于数组类型的字段以及 ES 中自动支持数组类型的事实。我有一个字段 ProductIds 可以包含 1 或 n 个值。映射定义如下:
[…] “产品编号”:{ “类型”:“整数”, “商店”:“是的” }, […]
如果该字段包含几个 Id,则 ES 中的查询结果如下所示:
产品编号:[ 1、 2 ]
事实上,数组类型是自动的,如果它只包含一个值,则该字段看起来像这样:
产品编号:1
这种情况会导致以下问题:我确实有一个映射到某个类的嵌套查询。在此类中,属性 ProductIds 定义为 a List<int>
(我也尝试使用整数数组)。只要有多个值,它就可以很好地工作。如果该字段在 ES 中仅包含一个值,则将其保存为原始数据类型。这会导致 Newtonsoft.JSON 中出现错误:
连接错误。在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader 阅读器,对象值,CultureInfo 文化,JsonContract 合同,类型 targetType)
在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader 阅读器,类型 objectType,JsonContract 合同,JsonProperty 成员,JsonContainerContract containerContract,JsonProperty containerMember,对象现有值)
在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty 属性,JsonConverter propertyConverter,JsonContainerContract containerContract,JsonProperty containerProperty,JsonReader 阅读器,对象目标)
那么有什么建议可以解决这个问题吗?TIA