Elasticsearch BulkProcessor 批量插入、刪除的具體實現

原文鏈接:http://120.203.18.89:6969/wp-admin/post.php?post=93&action=edit

參考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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章