在弹性NEST 2.0中使用后缀

时间:2016-05-04 08:36:29

标签: .net elasticsearch nest

我正在尝试为我的某个属性创建一个multi_field,以使用后缀获取原始值

elasticClient.CreateIndex(IndexName.From<ResultModel>(),
    index => index.Mappings(
        mappings => mappings.Map<ResultModel>(
            map => map.AutoMap().Properties(
                properties => properties.String(
                    s => s.Name(e => e.Name.Suffix("raw")).Index(FieldIndexOption.NotAnalyzed)
                )
            )
        )
    )
);

然而,查看创建的索引,它被命名为raw,没有字段名称的前缀。

field name

对于NEST 2.0,文档有点粗略,我可以找到的唯一文档是序列化输出时的测试用例场景:

https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/field-inference.html

任何人都知道如何在NEST 2.0中创建带后缀的这些multi_fields?

1 个答案:

答案 0 :(得分:1)

来自NEST github的

Thisthat问题解释了如何在版本2中执行此操作。

在你的情况下,这将是:

var createIndexResponse = client.CreateIndex(IndexName.From<ResultModel>(),
    index => index.Mappings(
        mappings => mappings.Map<ResultModel>(
            map => map.AutoMap().Properties(
                properties => properties.String(
                    s => s.Name(e => e.Name)
                        .Index(FieldIndexOption.Analyzed)
                        .Fields(f => f.String(s2 => s2.Name("raw").Index(FieldIndexOption.NotAnalyzed)))
                    )
                )
            )
        )
    );

希望它有所帮助。