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

本文解析了Elasticsearch默认排序原理,揭示了_score降序排序的机制,并深入探讨了使用_doc排序的潜在问题及其适用场景,为优化ES查询效率提供指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的文件系统先后顺序来导是最快的,在其他场景记得慎用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值