当前位置 : 主页 > 编程语言 > 其它开发 >

ElasticSearch7.3学习(十九)---- deep paging

来源:互联网 收集:自由互联 发布时间:2022-05-30
1、什么是deep paging 根据相关度评分倒排序,所以分页过深,协调节点会将大量数据聚合分析。 2、deep paging 性能问题 1消耗网络带宽,因为所搜过深的话,各 shard 要把数据传递给 coord
1、什么是deep paging

根据相关度评分倒排序,所以分页过深,协调节点会将大量数据聚合分析。

2、deep paging 性能问题

1消耗网络带宽,因为所搜过深的话,各 shard 要把数据传递给 coordinate node,这个过程是有大量数据传递的,消耗网络。

2消耗内存,各 shard 要把数据传送给 coordinate node,这个传递回来的数据,是被 coordinate node 保存在内存中的,这样会大量消耗内存。

3消耗cup,coordinate node 要把传回来的数据进行排序,这个排序过程很消耗cpu。 所以:鉴于deep paging的性能问题,所有应尽量减少使用。

如上图所示:查询第9990页数据。来理解deep paging:

我们比较容易想到,我们每个节点都取第9990页的10条数据,在把三个shard总共30条数据在排序取前10条。但是事实真是这样的吗?

因为每次搜索的关键词是不同的,所有的score在每个shard中是呈现出完全不一样的分布。可能某个shard的第一条数据的score都比另一个shard上第10000个数据的评分都要低。所以,每个shard取10条数据是完全错误的。

那真正的分页是怎样的呢?

首先每个shard都会将10000条数据给协调节点,协调节点在内存中再排序,拿出我们想要的10条数据,然后在返回给客户端。

综上所述,在实际的应用过程中一般避免分页过深。

【转自:武汉网站建设公司 http://www.wh5w.com 复制请保留原URL】

上一篇:trie/fsa/fst的学习
下一篇:没有了
网友评论