
在
elasticsearch可以根据字段的特定值分配顺序的情况下,这是可能的。
我已经使用基于脚本的排序实现了您要查找的内容,该排序利用了无痛脚本。您可以参考我提到的链接,以了解更多有关以下查询的内容,这些内容足以满足您的需求。
还假设您在以下映射中具有
genreand
movieas关键字。
PUT sampleindex{ "mappings": { "_doc": { "properties": { "genre": { "type": "text", "fields": { "raw": { "type": "keyword" } } }, "movie": { "type": "text", "fields": { "raw": { "type": "keyword" } } } } } }}您可以利用下面的查询来获得您想要的东西
GET sampleindex/_search{ "query": { "match_all": {} }, "sort": [{ "_script": { "type": "number", "script": { "lang": "painless", "inline": "if(params.scores.containsKey(doc['genre.raw'].value)) { return params.scores[doc['genre.raw'].value];} return 100000;", "params": { "scores": { "comedy": 0, "sci-fi": 1, "drama": 2 } } }, "order": "asc" } }, { "movie.raw": { "order": "asc"} }]}请注意,我已经为
genre和同时包含了sort
movie。基本上会发生排序,
genre然后发布,然后
movie针对每种类型进一步排序。
希望能帮助到你。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)