gpt4 book ai didi

elasticsearch - NEST:如何处理包含单个值的数组字段(Newtonsoft Json 序列化错误)

转载 作者:行者123 更新时间:2023-11-29 02:55:19 26 4
gpt4 key购买 nike

在结合 NEST 评估 ElasticSearch 的过程中,我遇到了一个新问题。问题是关于数组类型的字段加上 ES 自动支持数组类型的事实。我有一个 ProductIds 字段,它可以包含 1 或 n 个值。映射定义如下:

[…]    "ProductIds" : {        "type" : " integer",        "store" : "yes"    },[…]

如果该字段包含几个 Id,ES 中的查询结果如下所示:

ProductIds: [    1,    2]

事实上,数组类型是自动的,如果字段只包含一个值,它看起来像这样:

    ProductIds: 1

这种情况会导致以下问题:我确实有一个映射到某个类的嵌套查询。在此类中,属性 ProductIds 定义为 List<int> (我也用整数数组试过)。只要有不止一个值,这就可以很好地工作。如果该字段在 ES 中仅包含单个值,则将其保存为原始数据类型。这会导致 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)

那么有什么建议可以解决这个问题吗?时间差

最佳答案

您不是第一个遇到此问题的人,这里提供了解决方案: https://github.com/Mpdreamz/NEST/issues/227#issuecomment-16550076

NEST 也计划对此提供开箱即用的支持。

关于elasticsearch - NEST:如何处理包含单个值的数组字段(Newtonsoft Json 序列化错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com