ES批量操作超时问题处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES批量操作超时问题处理相关的知识,希望对你有一定的参考价值。

参考技术A 在我们springboot项目中使用的是 elasticsearch-rest-high-level-client这个ES官方推荐的客户端

当有需求批量删除过期数据一开始使用的是deleteByQuery方法,在要删除的数据比较少的时候没问题,达到几十万条的时候会报 socket超时异常,但是命令不会中断,仍然会执行完,把我们需要delete的数据删完,就是看不到结果,
这时候我们可以

很明显最后一种最合理,作为一个有追求的程序员看不见程序运行结果怎么呢
这个时候我们可以用deleteByQueryAsync :官方文档提供异步调用方式,用listener监听返回结果

监听类很简单,实现 ActionListener<BulkByScrollResponse>接口 重写两个方法一个接受成功,一个接受失败

成功的结果长这个样子

重点是删除条数 和 执行批次, 批次=影响数据量/设置的批次大小+1

同理 批量select insert update 都有async异步调用的方法。

以上是关于ES批量操作超时问题处理的主要内容,如果未能解决你的问题,请参考以下文章

ES删除和修改返回参数说明

驱动读写超时处理

等待操作超时 Win32Exception (0x80004005):等待操作超时 azure

Java如何实现任务超时处理

Scala如何使用akka actor有效地处理超时操作

用C#连接操作MYSQL时,老是会超时,怎么处理SQL语句执超时啊,连接字符串里好像设置不了。