四大模式区别:

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));
        }
    }
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐