elasticsearch5.x之Slice scroll

1.背景

在使用ES的过程中,存在进行深度分页的需求,但是ES深度分页会占用大内存,吞吐量提升很难,因此进行调研ES特性,找到解决深度分页或者满足此类需求的解决方法。

2.具体

2.1 Sliced Scroll

开始支持的最小版本:5.0.0

2.2 Search After

由于对数据实时性没有严格的要求,因此暂时没有使用这个功能;下面的测试是Sliced Scroll

2.3 压测及结论

2.3.1 环境搭建

在三台虚拟机上面安装一个Es5.x集群;

2.3.2 压测报告

测试报告

任务:10个线程各自读取19966360个doc
searchWithScroll
15:23:44
15:51:48
总耗时:28分钟

任务:10个线程各自读取19966360个doc
fromsize
16:04:06
16:10:58
运行到16:10:58时,获取的量为3200000,此刻服务端内存溢出
总耗时:不可用

任务:10个线程各自读取19966360个doc
searchSliceWithScroll
16:51:06
17:07:16
总耗时:16分钟

任务:10个线程各自读取19966360个doc(特殊说明:切片数为10,shard数为5,切片数大于shard数)
searchSliceWithScroll
09:58:31
10:10:48
总耗时:12分钟

10:24:46
10:36:04
总耗时:12分钟

任务:10个线程各自读取19966360个doc(特殊说明:切片数为5,shard数为5,切片数等于shard数)
searchSliceWithScroll
10:37:44
10:49:23
总耗时:12分钟

10:52:12
11:05:09
总耗时:13分钟

———————采用默认的uid来进行切片————————–
任务:10个线程各自读取19966360个doc(特殊说明:切片数为5,shard数为5,切片数等于shard数)
searchSliceWithScroll
13:41:06
13:52:42
总耗时:11分钟

13:55:02
14:07:00
总耗时:11分钟

结论:使用searchSliceWithScroll替代fromsize;另外,Sliced默认采用的uid切片和单独创建一个整形字段来切分对内存和cpu的影响区别不大(从公司的falcon监控上从测试中观察到);

注意:虽然Scroll相对fromsize较好,但是要也要注意服务保护,保护es集群的可用和稳定;

参考:https://github.com/elastic/elasticsearch/blob/148f9af5857f287666aead37f249f204a870ab39/docs/reference/search/request/search-after.asciidoc

参考:http://www.infoq.com/cn/news/2016/08/Elasticsearch-5-0-Elastic

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值