NEST Elasticsearch 高级排序
NEST Elasticsearch advanced sorting
我有很多动物文档,我想对这些项目进行排序,猫应该先结果,然后是其他动物。
我的做法
var client = new Nest.ElasticClient(settings);
client.Search<Animals>(s => s.MatchAll().Sort(y => y.Descending(d => d.Type == "cat")));
但是没有得到想要的结果。
为此你需要使用 script sorting
如果您想要源中的字段名称类型。您无法获取文本字段的值,但这适用于关键字字段
var items = db.Search<Animals>(s => s.
Index("test").
Type("").
Sort(sort => sort.
Script(sd => sd.
Type("number").
Script(sdd => sdd.
Inline("doc['type.keyword'].value == 'cat' ? 0 : 1")).
Ascending())));
如果你想要来源的索引类型。注意我不建议将它用于新应用程序,因为它们会在 ES6
中删除它
var items2 = db.Search<Animals>(s => s.
Index("test").
Type("").
Sort(sort => sort.
Script(sd => sd.
Type("number").
Script(sdd => sdd.
Inline("doc['_type'].value == 'cat' ? 0 : 1")).
Ascending())));
我有很多动物文档,我想对这些项目进行排序,猫应该先结果,然后是其他动物。
我的做法
var client = new Nest.ElasticClient(settings);
client.Search<Animals>(s => s.MatchAll().Sort(y => y.Descending(d => d.Type == "cat")));
但是没有得到想要的结果。
为此你需要使用 script sorting
如果您想要源中的字段名称类型。您无法获取文本字段的值,但这适用于关键字字段
var items = db.Search<Animals>(s => s.
Index("test").
Type("").
Sort(sort => sort.
Script(sd => sd.
Type("number").
Script(sdd => sdd.
Inline("doc['type.keyword'].value == 'cat' ? 0 : 1")).
Ascending())));
如果你想要来源的索引类型。注意我不建议将它用于新应用程序,因为它们会在 ES6
中删除它var items2 = db.Search<Animals>(s => s.
Index("test").
Type("").
Sort(sort => sort.
Script(sd => sd.
Type("number").
Script(sdd => sdd.
Inline("doc['_type'].value == 'cat' ? 0 : 1")).
Ascending())));