sql多字段求和降序排序_elasticsearch基础笔记11-搜索排序

本文介绍了Elasticsearch的默认排序方式,基于查询与文档相关度的降序排列,以及如何通过指定字段进行排序。对于match_all查询,由于不评分,排序默认按创建时间。多字段排序则按顺序指定字段。影响评分的因素包括分片数量和分词器的选择,分片数量会影响每个分片的数据量,进而影响结果,而不同的分词器会决定搜索内容的分词结果,从而影响查询效果。
摘要由CSDN通过智能技术生成
8efede16c9c348775335ac988738e7b9.png

1、默认排序

ES是按照查询和文档的相关度进行排序的,默认是降序排列,也就是说,我们之前的查询,

54853d4e7686eb4c896318f368c402bc.png

可以认为是下面这样子的,。

2d881dbdb655d6c82e8949c404f34f73.png

当然,我们也可以换一个字段来进行排序,那么,就不用评分了。

8530032dba49c47b8118f0cce5c58f69.png

全文搜索也类似的

e94777f2ea2f925c8c93d436ce4abf35.png

这里有个特例查询要说明下:

match_all查询,这个查询不评分,所以,排序是默认按照创建时间排序的。match_all的官方解释如下:

dbba9ce556f578b57f839b07228a6754.png

所以,要对这个查询排序,需要_doc倒序即可。

2、多字段排序

多字段排序,只需将多个字段在排序中按照先后顺序写入即可。这个和我们常用的sql查询没差别。

eb1961028cf39f02ab7bae580adf2618.png

3、影响评分的因素。

关于ES评分,还是比较复杂的,具体可以看看大神们的文章和官方文档。

我觉得比较容易理解的两个影响评分的因素是分片数量和分词器使用。

我们不纠结太细致的算法,简单粗暴可把相关度评分认为是:搜索文本的各个词条在文档的字段中出现了多少次,次数越多,越相关。搜索文本的各个词条在所有文档中出现了多少次,越多越不相关。

分片影响:es在执行查询的时候,是把请求发到分片上分别执行,因为每个分片都有一部分数据。分片在进行计算之后,将数据集合再返回出来。如果分片数少一个。那么每个分片上的数据量就变多了,那么,很可能计算的结果就不一样了。

分词影响:分词决定了搜索内容会被分结出那些词条,词条不容,当然查询结果不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值