ElasticSearch 是否支持使用 ElasticProperty 的动态字段?

Does ElasticSearch support dynamic fields using ElasticProperty?

我正在使用 Nest 在 C# 中访问 ElasticSearch。我设置了一个结构,它指定 ElasticProperty 属性来定义要 stored/indexed/sorted/etc 的字段。一切都很好。

现在我有一个新的要求来保存和搜索额外的 "dynamic" 数据...

这个新数据是这样工作的:我的数据结构(项目)可以有多个关联的字符串标签,分类到不同的部分。所以单个项目可能有 Section1.Label1, Section1.Label2, Section2.Label1,Section3.Label4.

如果我将其存储在 c# 中,我可能会使用 Dictionary<string, List<string>> 来存储它。但是在 ElasticSearch 中,我还需要能够搜索这些标签,例如 "Give me all items that have Section2.Label1"。不需要分析标签(只是存在与否)。

感谢您提供任何线索,告诉 Nest 如何存储这样的数据字段。

更新 #1:看起来我可能正在查看某种类型的 [ElasticProperty(Type = FieldType.Nested)] 而不是动态映射。我应该只使用标记为嵌套类型的 Dictionary<string, List<string>> 吗?

看起来这行得通...

    [ElasticProperty(Index = FieldIndexOption.NotAnalyzed, Store = true, Type = FieldType.Nested, OmitNorms = true, IncludeInAll = false)]
    public Dictionary<string, List<string>> MyLabels { get; set; }

在 ElasticSearch 端,它是一个包含字符串数组的映射。我仍然需要在搜索端工作以提出一个查询,该查询将确定特定映射中特定标签的存在,但这应该是直截了当的(敲木头)。