Elasticsearch BulkProcessor 批量插入、删除的具体实现

参考http://120.203.18.89:6969/93/elasticsearch-bulkprocessor-%e7%9a%84%e5%85%b7%e4%bd%93%e5%ae%9e%e7%8e%b0/

Elasticsearch 使用 BulkProcessor 将 Bulk API 进一步封装,大大简化了对文档的 增加/更新/删除 操作。接下来,我们一起来学习一下 BulkProcessor 的具体实现。 版本:6.5.0

一、添加 pom 依赖

本文示例使用的是 Spring Boot 框架,由于该框架有默认的 Elasticsearch 版本,为了避免版本混乱或冲突,我在 pom.xml 文件内添加了如下依赖:(如果用的5.5.0的ELK,可以使用5.6.8的包,兼容性好)

<!-- elasticsearch 6.5.0 -->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>6.5.0</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>6.5.0</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.plugin</groupId>
    <artifactId>transport-netty4-client</artifactId>
    <version>6.5.0</version>
</dependency>

二、创建 BulkProcessor 实例

1、BulkProcessor 类提供了简单接口去自动刷新 bulk 操作,可设置条件来自动触发 bulk 操作。比如:

  • 设置 request 的数量:setBulkActions()
  • 设置 request 的大小:setBulkSize()
  • 设置 bulk 执行的周期:setFlushInterval()

还可指定一些优化的参数,比如:

  • 设置并发请求数:setConcurrentRequests()
  • 设置最大重试次数和重试周期:setBackoffPolicy()

2、如果创建 BulkProcessor 实例,需要指定 Elasticsearch 初始化的 client ,这里是用 TransportAddress 来初始化的 client 。client 用于执行 BulkRequest 和 BulkResponse 。

3、BulkProcessor 有一个 Listener ,在每次 BulkRequest 执行之前或之后或 BulkRequest 失败时调用该 Listener 。

具体的 BulkProcessor 的代码实现如下所示(附带详细注释):

 

参考http://120.203.18.89:6969/93/elasticsearch-bulkprocessor-%e7%9a%84%e5%85%b7%e4%bd%93%e5%ae%9e%e7%8e%b0/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值