线程池的使用场景--采集es数据

场景:
从ElasticSearch的多个index中持续增量采集数据
初步解决方案:
因为search_after本身可以采集多index,所以使用search_after直接采集数据
遇到的问题:
search_after采集多个index有限制,要么明确指定多个index的具体名称,要么使用*通配符,这两种方式中,前者太刻板,每次执行采集任务都需要手动输入很多index名称,后者不灵活,会匹配到用户不愿意或者不需要采集的index。
解决方案优化

  1. 使用正则表达式匹配index
  2. 使用search_after采集数据
    遇到的问题:无法采集代码运行后,新建出来的符合正则表达式规则的index
    原因:当正则表达式第一次匹配index时,假设有十个index被匹配,此时如果采用search_after来同时采集这十个index的方法,那么search_after的结果集是基于这十个index的,即search_after中的游标sort是基于这是个index的,所以当出现新的index,结果集就变成11个index的数据,此时,无法用原先的sort来进行下一页采集。因此如果使用search_after不能一次性对所有的index进行采集。
    最终解决方案:
    依然使用正则表达式和search_after的方式来采集数据,但是所有的index分开采集,即原先代码只维护一个sort,现在代码维护n个sort,n由index的数量决定。既然是分index采集,那么单线程的模式会比较影响效率,所以可以采用多线程的方法,来对每个index进行采集。具体的实现就是将单独index采集任务提交到线程池,由线程池来产生线程去采集数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值