Elasticsearch.net v. 2.3+ 库 (c#) 中多字段映射的替代方案?

Alternative for multifield mapping in Elasticsearch.net v. 2.3+ library (c#)?

我的问题: 我有一个包含字符串 属性 的索引,我在该索引上执行查询和聚合。我想执行术语查询,其中 属性 被分析,而术语聚合 属性 未被分析。在以前的 elasticsearch 版本中,有一个多字段映射,但是自该库的 2.0 版本以来它就消失了。我怎样才能做到这一点?

旁注: 我想避免在我的索引中复制 属性 并将重复项中的一个标记为已分析,另一个标记为未分析,因为它似乎不是有效的解决方案。

我使用的库 (c#): Elasticsearch.net 2.3.3 和 NEST 2.3.3.

欢迎提出任何建议。

multi_field 映射仍然存在于 Elasticsearch 2.x 和 NEST 2.x 中;这是一个例子

client.Map<Document>(m => m
    .Index("index-name")
    .AutoMap()
    .Properties(p => p
        .String(s => s
            .Name(n => n.Location)
            .Fields(f => f
                .String(fs => fs
                    .Name("raw").NotAnalyzed()
                )
            )
        )
    )
);

此处 Location 属性 被映射为 multi_field 并应用了默认的 Standard 分析器;这将在索引的 location 字段中。此外,location.raw 字段已编入索引,但未进行分析。

使用分析后的 location 属性 执行术语查询将是

client.Search<Document>(s => s
    .Query(q => q
        .Term(f => f.Location, "location")
    )
);

并且在术语聚合中使用未分析的 属性 将是

client.Search<Document>(s => s
    .Size(0)
    .Aggregations(a => a
        .Terms("top_locations", ta => ta
            .Field(f => f.Location.Suffix("raw"))
        )
    )
);