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

标签 elasticsearch nest

在结合 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/

相关文章:

elasticsearch - bool 查询中的多个异或过滤器

c# - NEST (C#) 如何隐式转换类型?

apache-spark - pyspark-结构化流到 Elasticsearch

c# - NEST ElasticSearch Cache QueryDescriptor供将来使用

c# - ElasticSearch NEST-先按GroupBy再按OrderBy

c# - 如何在 Windows 应用程序中异步调用 Elasticsearch NEST 中的 BulkAll 方法

c# - 如何在 NEST 和 Elastic Search 中基于字段进行聚合?

performance - 端到端测试大数据管道的工具?

elasticsearch - 为索引创建映射时出错

elasticsearch - 按自定义日期分组