2.x 中 AddSortField 的嵌套客户端替代方案

Nest Client alternative for AddSortField in 2.x

目前,我们使用 NEST 客户端进行所有索引操作,其中 "AddSortField" 用于对分析的字段进行排序(以及排序分析器)。看起来此选项在 2.X 中不再可用。有没有其他选择?或者任何关于在 2.X 中对分析字段进行排序的建议将不胜感激。

注意:当前使用的 NEST 和 Elasticsearch 版本是 1.X

谢谢,

帕文

NEST 1.x 中的

AddSortField 只是一种将 属性 映射为 multi_field with a sort sub-field to be used when sorting; for string fields where no SortAnalyzer is specified, this field is not_analyzed.

的便捷方法

要在 NEST 2.x 中实现相同的效果,您可以 use fluent mapping 将 属性 映射为 multi_field,添加 sort 子字段

var descriptor = new CreateIndexDescriptor("myindex")
    .Mappings(ms => ms
        .Map<Company>(m => m
            .Properties(ps => ps
                .String(s => s
                    .Name(n => n.Name)
                    // map as multi_field
                    .Fields(fs => fs
                        .String(ss => ss
                            .Name("sort")
                            .Index("sortAnalyzer")
                        )
                    )
                )
            )
        )
    );

sorting 时,您将按 name.sort

排序
var response = client.Search<Company>(s => s
    .Query(q => q.MatchAll())
    .Sort(ss => ss
        .Ascending(p => p.Name.Suffix("sort"))
    )
);