我有很多动物文件,我想对这些物品进行分类,猫应该首先,之后是其他动物。
我的方法
var client = new Nest.ElasticClient(settings);
client.Search<Animals>(s => s.MatchAll().Sort(y => y.Descending(d => d.Type == "cat")));
但它没有给出理想的结果。
答案 0 :(得分:1)
为此,您需要使用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())));