四大模式区别:

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

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐