首页 > 其他分享 >es5.1.1 修改索引数据

es5.1.1 修改索引数据

时间:2023-03-21 18:01:38浏览次数:34  
标签:index 修改 indexRequest updateRequest 索引 es5.1 client new id


# 环境描述
使用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();// 执行请求命令

标签:index,修改,indexRequest,updateRequest,索引,es5.1,client,new,id
From: https://blog.51cto.com/u_16021118/6140756

相关文章

  • mysql 在线修改表结构 onlineDDL
    背景:在项目库中有几个表的数据特别大,数据条数达到几千万。由于新需求上线,要加两个字段。如果直接在数据库用alter,会导致锁表,时长一两个小时,影响业务。所以找了pt-osc和gh-......
  • 修改表字符集
    修改表的字符集并使历史行生效ALTERTABLEcustomerCONVERTTOCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci; 查看字段的字符集和排序字符集selecttable_s......
  • Cadence16.6批量修改原理图中器件属性
    https://blog.csdn.net/cheer_me/article/details/115678835 操作步骤如下(1)选中.dsn设计⼯程⽂件—>Tools—>Exportproperties—>默认选项并点击OK。即可⽣成⼀个后......
  • Java实现记录对象修改前后的变化
    需求描述今天接到一个需求,修改数据时需要记录修改详情。详情包括,被修改的字段,修改前的值和修改后的值。解决思路分别比较修改前后两个Bean实例的所有成员变量,当值不一致时......
  • 在线直播系统源码,顶部标题栏的隐藏和显示、标题修改
    在线直播系统源码,顶部标题栏的隐藏和显示、标题修改1、顶部标题栏的隐藏:在我们的project工程下,找到“values”文件夹下的“themes.xml”或“styles.xml”文件(文件位置一......
  • 使用Python标准库修改 Windows 系统代理
    转载:https://www.jianshu.com/p/6862d35e2855?tdsourcetag=s_pcqq_aiomsg Why在用Python编写一些网络相关的脚本时经常会需要连上特定代理。而面向Google编程又......
  • Allegro-PCB修改原点位置
      2、打开Setup菜单栏下面的Designparameters选项,在DesignparametersEditor对话框选择Design菜单栏,在Moveorigin标签下输入新的坐标就可以修改原点位置了  ......
  • idea创建maven项目默认访问页面的修改
    在web.xml文件中的<web-app标签>之间加入代码<welcome-file-list> <welcome-file>这儿写你要显示的页面名称</welcome-file></welcome-file-list>之后就能跳转到对应的......
  • mysql索引、优化、sql性能分析
    为什么InnoDB存储引擎选择使用B+tree索引结构?相对于二叉树,层级更少,搜索效率高对于B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针......
  • 关于element-ui修改.el-submenu__title悬浮样式不生效的问题
    以下内容仅供个人学习使用据网友分析原因:二级菜单是使用slot添加的,单独给这个slot添加样式,等渲染出来,样式没有了,需要有深选择器。可以使用深选择器,加入以下样式方可解决......