开发者学堂课程【ElasticSearch 最新快速入门教程:批量操作介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/642/detail/10645
批量操作介绍
内容介绍:
一、批量操作用法一
二、批量操作用法二
Elasticsearch 的 BulkAPI 允许批量提交 index 和 delete 请求,有如下两种用法
一、用法1
BulkRequestBuilder requestBuilder = client.prepareBulk();
for(Person person : personList){
String obj = getlndexDataFromHotspotDATA(PERSON);
if(obj!= null){
requestBuilder.add(client.preparelndex(“test_index”
,”test”,String.valueOf(person.getid())).setRefresh(true).setSource(obj));
}
}
二、用法2
BulkProcessor bulkProcessor = BulkProcessor.builder
(client,new BulkProcessor.Listener() {
@Override
public void beforeBulk(long I,Bulkequest bulkRequest,Bulk
Response bulkResponse) {
}
@Override
public void beforeBulk(long I,Bulkequest bulkRequest) {
}
@Override
public void afterBulk(long I,BulkRequest bulkRequest,
Throwable throwable) {
}
})setBulkActions(10000).setBulkSize(new ByteSizeValue
(1,BytesizeUnit.GB)).setFlushInterval(TimeValue.timeValue
Seconds(5)).build();
for(Person person:personList){
String obj = getIndexDataFromHotspotData(person);
if(obj!= null){
bulkProcessor.add(new IndexRequest("test_index" "test”,
String.valueOf(person.getId())).source(obj));
}
beforeBulk 会在批量提交之前执行,可以从 BulkRequest 中获取信息 requests()或者请求数量 request。numberOfActions()
第一个 afterBulk 会在批量成功后执行,可以跟 beforeBulk 配合计算批量所需时间
第二个 afterBulk 会在批量失败后进行
在例子中,当请求超过10000个(default=1000)或者总大小超过1GB(default=5MB)时,触发批量提交动作