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"))
)
);
目前,我们使用 NEST 客户端进行所有索引操作,其中 "AddSortField" 用于对分析的字段进行排序(以及排序分析器)。看起来此选项在 2.X 中不再可用。有没有其他选择?或者任何关于在 2.X 中对分析字段进行排序的建议将不胜感激。
注意:当前使用的 NEST 和 Elasticsearch 版本是 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"))
)
);