ES的默認排序和慎用_doc排序

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的文件系統先後順序來導是最快的,在其他場景記得慎用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章