四大模式区别:
INDEX:
这个模式下,可以采用es内部生成id的方式,使得每次写入都是新增数据,因为每一次的id都不同
CREATE:
需要指定id,如果id已存在,则该条数据写入失败(被丢弃)
UPDATE:
需要指定id,如果id已存在,覆盖原有数据
UPDAET --OPTION: DOC_AS_UPSERT
需要指定id,如果id已存在,以UPSERT的方式更新数据,而不是直接覆盖原有数据。
Java API
requestIndexer.add(Requests.indexRequest().index(index).type(type).source(jsonObject));
requestIndexer.add(Requests.indexRequest().create(true).index(index).id(id).type(type).source(jsonObject));
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(index).id(id).type(type).doc(jsonObject);
requestIndexer.add(updateRequest);
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));
}
}
|