Java之ES批量處理

趁着有時間,下面來繼續記錄並分享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();
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章