赞
踩
- # 环境描述
- 使用es版本为:5.1.1
- 使用client为:TransportClient client,不是highLevelClient
-
-
-
- # 1. 知道当前数据rowid时
- UpdateRequest updateRequest = new UpdateRequest("index-2021.08.16","type","rowid")
- .doc(Map.of("agent","aa"));
- updateRequest.docAsUpsert(true);
- client.update(updateRequest);
-
-
- # 2. 知道当前数据rowid时 (第二种)
- // 创建更新对象
- UpdateRequest updateRequest = new UpdateRequest(index,type,id);
- // 创建一个indexRequest对象指定索引名,类型,和文档id
- IndexRequest indexRequest = new IndexRequest(index,type,id);
- // 将需要修改的字段放进source里面,这里的ma可以是map,json,string,以及xtContentBuilder对象
- indexRequest.source(data);
- // 创建一个updateRequest对象指定索引名,类型,id,然后将indexRequest传入upsert方法中
- updateRequest.upsert(indexRequest);
- // 再将indexRequest放入doc中,猜测实际做了两次修改
- updateRequest.doc(indexRequest);
- // 最后发送请求
- try {
- UpdateResponse updateResponse= client.update(updateRequest).get();
- return updateResponse.status().getStatus();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
-
- # 3. 不知道当前数据rowid时
- // 创建更新对象
- UpdateRequest updateRequest = new UpdateRequest(index,type,id);
- // 创建一个indexRequest对象指定索引名,类型,和文档id
- IndexRequest indexRequest = new IndexRequest(index,type,id);
- // 将需要修改的字段放进source里面,这里的ma可以是map,json,string,以及xtContentBuilder对象
- indexRequest.source(data);
- // 创建一个updateRequest对象指定索引名,类型,id,然后将indexRequest传入upsert方法中
- updateRequest.upsert(indexRequest);
- // 再将indexRequest放入doc中,猜测实际做了两次修改
- updateRequest.doc(indexRequest);
- // 最后发送请求
- try {
- UpdateResponse updateResponse= client.update(updateRequest).get();
- return updateResponse.status().getStatus();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
-
- # 4. 不知道当前数据rowid时 (第二种,highLevelClient时使用)
- UpdateByQueryRequest request = new UpdateByQueryRequest();
- request.setDocTypes("student");
- request.setQuery(new TermQueryBuilder("name","黑骑一户"));
- client.updateByQuery(request);
-
-
- # 5. 当不知道rowid时 (实时刷新更新数据的)
- BulkIndexByScrollResponse bulkIndexByScrollResponse = UpdateByQueryAction.INSTANCE.newRequestBuilder(client) // 创建新的请求builder
- .source(index) // 设置索引index
- .filter(QueryBuilders.termQuery("msg", alertId)) // 设置过滤条件
- .script(new Script(ScriptType.INLINE, "painless", "ctx._source.msg='cc'", Collections.EMPTY_MAP)) // 设置批量修改脚本
- .abortOnVersionConflict(false) // 设置ES版本导致问题失败是否停止运行
- .get();// 执行请求命令
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。