预排序概述
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/index-modules-index-sorting.html
在Elasticsearch中创建新索引时,可以配置如何对每个碎片中的段进行排序。默认情况下,Lucene不应用任何排序。index.sort.*设置定义应使用哪些字段对每个段中的文档进行排序。当查找TopN文档时,默认需要遍历所有文档才可以找到所有的相关文档,但当配置了索引排序后,如果检索排序与索引排序一致,则每个分片上只需要检索前N个文档即可,这样便可以提前结束查询,减少计算和提升性能。
以下示例演示如何在单个字段上定义排序:
PUT twitter
{
"settings" : {
"index" : {
"sort.field" : "date",
"sort.order" : "desc"
}
},
"mappings": {
"_doc": {
"properties": {
"date": {
"type": "date"
}
}
}
}
}
也可以按多个字段对索引进行排序:
PUT twitter
{
"settings" : {
"index" : {
"sort.field" : ["username", "date"],
"sort.order" : ["asc", "desc