1.ES的默认排序
ES默认的排序,是按 _score的desc。如果score分数一样排序就会乱。所以需要给不打分的数据排序可以用** _uid或者自定义的字段排序**
2.为什么慎用_doc排序
_doc 其实就是按照Lucene 文件结构的当时索引时的先后顺序,那么按道理它就是最快的,可是,别忘了,ES是分布式的,也就是说,这里有很多个Lucene,这个_doc 在一个shard 里它是唯一的,可是在ES集群则不然,比如一个doc1 在shard A 上是2 ,那么它的_doc就是2, 可是有可能doc5 在shard C上也是2,因此他们两个的_doc值是一样的,也就是说还是避免不了排序上的先后,只不过这种几率会减少了很多。
其实,_doc 仅用在scroll scan下是有意义的, 因为scroll的scan 是直接按Lucene全量导,而按Lucene的文件系统先后顺序来导是最快的,在其他场景记得慎用。