趁着有時間,下面來繼續記錄並分享ES相關:
具體實現如下所示:
/**
* create by wxy_jdhk
*/
public class ElasticSearchUtils {
//批量處理
public void getBulkProcessor(TransportClient client) {
BulkProcessor bulkProcessor = BulkProcessor.builder(
client, //es 客戶端
new BulkProcessor.Listener() {
//在bulk執行時調用
public void beforeBulk(long arg0, BulkRequest arg1) {
// TODO Auto-generated method stub
}
//在bulk失敗或異常時調用
public void afterBulk(long arg0, BulkRequest arg1, Throwable arg2) {
// TODO Auto-generated method stub
}
//在bulk異常之後執行
public void afterBulk(long arg0, BulkRequest arg1, BulkResponse arg2) {
// TODO Auto-generated method stub
}
})
//每10000次請求執行一次bulk
.setBulkActions(10000)
//每5mb刷新一次bulk
.setBulkSize(new ByteSizeValue(5, ByteSizeUnit.MB))
//每5秒鐘刷新一次
.setFlushInterval(TimeValue.timeValueSeconds(5))
//0:只允許一個請求執行
//1:允許創建新的請求
.setConcurrentRequests(1)
.setBackoffPolicy(
BackoffPolicy.exponentialBackoff(TimeValue.timeValueMillis(100), 3)
).build();
//向iBulkProcessor添加示例
bulkProcessor.add(new DeleteRequest("twitter", "_doc", "2"));
//關閉批量處理
try {
bulkProcessor.awaitClose(10, TimeUnit.MINUTES);
} catch (InterruptedException e) {
e.printStackTrace();
}
bulkProcessor.close();
}
}