开发者学堂课程【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
=
getlndexDataFromHotsp
ot
DATA(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,B
ulkRequest
bulkRequest
,
Th
rowable
throwable)
{
}
})se
tB
u
lkA
ct
i
o
n
s
(10000).setBulkSize(new
ByteSizeValue
(1
,BytesizeUn
it
.GB)).setFlushInterval(TimeValue.timeValue
Seconds(5)).build();
for(Person
person:personList)
{
S
tring
obj
=
get
I
ndexDataFromHotspotData(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)时,触发批量提交动作