ES写入四大模式:INDEX、CREATE、UPDATE、DOC_AS_UPSERT
四大模式区别:INDEX:这个模式下,可以采用es内部生成id的方式,使得每次写入都是新增数据,因为每一次的id都不同CREATE:需要指定id,如果id已存在,则该条数据写入失败(被丢弃)UPDATE:需要指定id,如果id已存在,覆盖原有数据UPDAET--OPTION: DOC_AS_UPSERT需要指定id,如果id已存在,以UPSERT的方式更新数据,而不是直接覆盖原有数据。Java A
·
四大模式区别:
INDEX:
这个模式下,可以采用es内部生成id的方式,使得每次写入都是新增数据,因为每一次的id都不同
CREATE:
需要指定id,如果id已存在,则该条数据写入失败(被丢弃)
UPDATE:
需要指定id,如果id已存在,覆盖原有数据
UPDAET --OPTION: DOC_AS_UPSERT
需要指定id,如果id已存在,以UPSERT的方式更新数据,而不是直接覆盖原有数据。
Java API
// index
requestIndexer.add(Requests.indexRequest().index(index).type(type).source(jsonObject));
// create
requestIndexer.add(Requests.indexRequest().create(true).index(index).id(id).type(type).source(jsonObject));
// update
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(index).id(id).type(type).doc(jsonObject);
requestIndexer.add(updateRequest);
//doc_as_upsert
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(index).id(id).type(type).doc(jsonObject);
requestIndexer.add(updateRequest);
@Override
public void add(UpdateRequest... updateRequests) {
UpdateRequest[] var2 = updateRequests;
int var3 = updateRequests.length;
for(int var4 = 0; var4 < var3; ++var4) {
UpdateRequest updateRequest = var2[var4];
if (this.flushOnCheckpoint) {
this.numPendingRequestsRef.getAndIncrement();
}
this.bulkProcessor.add(updateRequest.docAsUpsert(true));
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)