本文主要是介绍Elasticsearch java API (10)批量处理 API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用批量处理器编辑
的 BulkProcessor
类提供了一个简单接口自动冲洗批量操作基于请求的数量或大小,或者在给定的时期。
使用它,首先创建一个 BulkProcessor
实例:
import org.elasticsearch.action.bulk.BackoffPolicy;
import org.elasticsearch.action.bulk.BulkProcessor;
import org.elasticsearch.common.unit.ByteSizeUnit;
import org.elasticsearch.common.unit.ByteSizeValue;
import org.elasticsearch.common.unit.TimeValue;BulkProcessor bulkProcessor = BulkProcessor.builder(client, //<1>new BulkProcessor.Listener() {@Overridepublic void beforeBulk(long executionId,BulkRequest request) { ... } //<2>@Overridepublic void afterBulk(long executionId,BulkRequest request,BulkResponse response) { ... } //<3>@Overridepublic void afterBulk(long executionId,BulkRequest request,Throwable failure) { ... } //<4>}).setBulkActions(10000) //<5>.setBulkSize(new ByteSizeValue(1, ByteSizeUnit.GB)) //<6>.setFlushInterval(TimeValue.timeValueSeconds(5)) //<7>.setConcurrentRequests(1) //<8>.setBackoffPolicy(BackoffPolicy.exponentialBackoff(TimeValue.timeValueMillis(100), 3)) //<9>.build();
| 添加您elasticsearch客户 |
| 调用此方法之前执行。例如你可以看到numberOfActions |
| 批量执行后调用此方法。例如你可以检查是否有一些失败的请求 |
| 调用此方法时,大部分失败了 |
| 我们想执行批量每10 000个请求 |
| 我们想要冲洗每1 gb |
| 我们想要冲洗大部分每5秒钟任何请求的数量 |
| 设置并发请求的数量。的值为0意味着只有一个单一的请求将被允许执行。值为1时表示1并发请求允许同时积累新的批量执行请求。 |
| 设置一个自定义的补偿政策,最初将等待100 ms,增加指数和重试3倍。重试尝试当一个或多个大部分项目没有一个请求 |
然后你可以添加你的请求 BulkProcessor
:
bulkProcessor.add(new IndexRequest("twitter", "tweet", "1").source(/* your doc here */));
bulkProcessor.add(new DeleteRequest("twitter", "tweet", "2"));
默认情况下, BulkProcessor
:
- 集bulkActions
1000
- 集bulkSize
5mb
- 不设置flushInterval
- concurrentRequests设置为1
- 集backoffPolicy指数倒扣8重试和开始50毫秒的延迟。总等待时间大约是5.1秒。
当文档加载到 BulkProcessor
它可以通过使用封闭 awaitClose
或 close
方法:
bulkProcessor.awaitClose(10, TimeUnit.MINUTES);
或
bulkProcessor.close();
两种方法刷新任何剩余的文档和禁用所有其他计划冲如果他们计划通过设置
flushInterval
。
如果启用了并发请求
awaitClose
法达指定的超时等待所有散装请求完成然后返回
true
,如果指定的等待时间流逝之前所有散装请求完成,
false
返回。
的
close
方法不会等待任何剩余的大部分请求完成并立即退出。
这篇关于Elasticsearch java API (10)批量处理 API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!