Elasticsearch学习(十一)————Java更新文档( partial Update、Upsert API)

partial Update、Upsert API————(更新文档)

1. partial Update (更新文档)
1.1. 更新文档——jsonString
    	/**
         * @param : client
         * @description : 修改文档————jsonString
         */
        private static void updateByJsonString(RestHighLevelClient client) throws Exception {
            UpdateRequest updateRequest = new UpdateRequest("my_index", "my_type", "5");
    
            Map<String, Object> paramsMap = new HashMap<>(16);
            List<String> list = new ArrayList<>();
            paramsMap.put("first_name", "冰河世纪");
            String jsonString = JSON.toJSONString(paramsMap);
    
            updateRequest.fetchSource(true);
    
            updateRequest.doc(jsonString, XContentType.JSON);
    
            //同步更新
            UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
    
            //异步更新
            ActionListener<UpdateResponse> listener = new ActionListener<UpdateResponse>() {
                @Override
                public void onResponse(UpdateResponse updateResponse) {
    
                }
    
                @Override
                public void onFailure(Exception e) {
    
                }
            };
            //client.updateAsync(updateRequest, RequestOptions.DEFAULT, listener);
    
    
            //返回信息
            GetResult getResult = updateResponse.getGetResult();
            System.out.println(getResult.sourceAsString());
            String index = updateResponse.getIndex();
            String type = updateResponse.getType();
            String id = updateResponse.getId();
            long version = updateResponse.getVersion();
            if (updateResponse.getResult() == DocWriteResponse.Result.CREATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.UPDATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.DELETED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.NOOP) {
    
            }
        }
1.2. 更新文档——jsonMap
    	 /**
         * @param : client
         * @description : 修改文档————jsonMap
         */
        private static void updateByJsonMap(RestHighLevelClient client) throws Exception {
            UpdateRequest updateRequest = new UpdateRequest("my_index", "my_type", "5");
    
            Map<String, Object> paramsMap = new HashMap<>(16);
            List<String> list = new ArrayList<>();
            paramsMap.put("first_name", "冰河");
    
            updateRequest.fetchSource(true);
    
            updateRequest.doc(paramsMap);
    
            //同步更新
            UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
    
            //异步更新
            ActionListener<UpdateResponse> listener = new ActionListener<UpdateResponse>() {
                @Override
                public void onResponse(UpdateResponse updateResponse) {
    
                }
    
                @Override
                public void onFailure(Exception e) {
    
                }
            };
            //client.updateAsync(updateRequest, RequestOptions.DEFAULT, listener);
    
    
            //返回信息
            GetResult getResult = updateResponse.getGetResult();
            System.out.println(getResult.sourceAsString());
            String index = updateResponse.getIndex();
            String type = updateResponse.getType();
            String id = updateResponse.getId();
            long version = updateResponse.getVersion();
            if (updateResponse.getResult() == DocWriteResponse.Result.CREATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.UPDATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.DELETED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.NOOP) {
    
            }
        }
1.3. 更新文档——XContentBuilder
   	  /**
         * @param : client
         * @description : 修改文档————XContentBuilder
         */
        private static void updateByXContentBuilder(RestHighLevelClient client) throws Exception {
            UpdateRequest updateRequest = new UpdateRequest("my_index", "my_type", "5");
    
            XContentBuilder builder = XContentFactory.jsonBuilder();
            builder.startObject();
            builder.field("first_name", "builder");
            builder.endObject();
    
            updateRequest.fetchSource(true);
    
            updateRequest.doc(builder);
    
            //同步更新
            UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
    
            //异步更新
            ActionListener<UpdateResponse> listener = new ActionListener<UpdateResponse>() {
                @Override
                public void onResponse(UpdateResponse updateResponse) {
    
                }
    
                @Override
                public void onFailure(Exception e) {
    
                }
            };
            //client.updateAsync(updateRequest, RequestOptions.DEFAULT, listener);
    
    
            //返回信息
            GetResult getResult = updateResponse.getGetResult();
            System.out.println(getResult.sourceAsString());
            String index = updateResponse.getIndex();
            String type = updateResponse.getType();
            String id = updateResponse.getId();
            long version = updateResponse.getVersion();
            if (updateResponse.getResult() == DocWriteResponse.Result.CREATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.UPDATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.DELETED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.NOOP) {
    
            }
        }
1.4. 更新文档——Object
    /**
         * @param : client
         * @description : 修改文档————Object
         */
        private static void updateByObject(RestHighLevelClient client) throws Exception {
            UpdateRequest updateRequest = new UpdateRequest("my_index", "my_type", "5");
    
            updateRequest.fetchSource(true);
    
            updateRequest.doc("first_name", "object","last_name", "object");
    
            //同步更新
            UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
    
            //异步更新
            ActionListener<UpdateResponse> listener = new ActionListener<UpdateResponse>() {
                @Override
                public void onResponse(UpdateResponse updateResponse) {
    
                }
    
                @Override
                public void onFailure(Exception e) {
    
                }
            };
            //client.updateAsync(updateRequest, RequestOptions.DEFAULT, listener);
    
    
            //返回信息
            GetResult getResult = updateResponse.getGetResult();
            System.out.println(getResult.sourceAsString());
            String index = updateResponse.getIndex();
            String type = updateResponse.getType();
            String id = updateResponse.getId();
            long version = updateResponse.getVersion();
            if (updateResponse.getResult() == DocWriteResponse.Result.CREATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.UPDATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.DELETED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.NOOP) {
    
            }
        }

2.Upsert—文档存在则更新,否则新增

  1. jsonString
  2. jsonMap
  3. XContentBuilder
  4. Object
    备注:2、3、4请参照上述更新操作
2.1. jsonString
  	 	  /**
         * @param : client
         * @description : 修改文档————jsonString
         */
        private static void upsertByJsonString(RestHighLevelClient client) throws Exception {
            UpdateRequest updateRequest = new UpdateRequest("my_index", "my_type", "7");
    
            //如果尚未存在,则表明必须将部分文档用作upsert文档
            updateRequest.docAsUpsert(true);
            //禁用noop检测
            updateRequest.detectNoop(false);
            //更新后是否获取_source
            updateRequest.fetchSource(true);
    
            Map<String, Object> paramsMap = new HashMap<>(16);
            paramsMap.put("about", "如果document存在就更新,否则新增");
            String jsonString = JSON.toJSONString(paramsMap);
    
    
    		//upsert
            updateRequest.upsert(jsonString, XContentType.JSON);
            //指定doc
            updateRequest.doc(jsonString,XContentType.JSON);
    
            //同步更新
            UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
    
            //异步更新
            ActionListener<UpdateResponse> listener = new ActionListener<UpdateResponse>() {
                @Override
                public void onResponse(UpdateResponse updateResponse) {
    
                }
    
                @Override
                public void onFailure(Exception e) {
    
                }
            };
            //client.updateAsync(updateRequest, RequestOptions.DEFAULT, listener);
    
    
            //返回信息
            GetResult getResult = updateResponse.getGetResult();
            System.out.println(getResult.sourceAsString());
            String index = updateResponse.getIndex();
            String type = updateResponse.getType();
            String id = updateResponse.getId();
            long version = updateResponse.getVersion();
            if (updateResponse.getResult() == DocWriteResponse.Result.CREATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.UPDATED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.DELETED) {
    
            } else if (updateResponse.getResult() == DocWriteResponse.Result.NOOP) {
    
            }
        }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值