官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-update.html

一、UpdateRequest


创建一个UpdateRequest,然后将其发送给client.

UpdateRequest uRequest = new UpdateRequest();uRequest.index("blog");uRequest.type("article");uRequest.id("2");uRequest.doc(jsonBuilder().startObject().field("content", "学习目标 掌握java泛型的产生意义ssss").endObject());client.update(uRequest).get();

二、prepareUpdate()


2.1使用脚本方式

首先打开elasticsearch-2.3.3/config/elasticsearch.yml,新增一行:

script.engine.groovy.inline.update: on

之后重启elasticsearch.

client.prepareUpdate("blog", "article", "1").setScript(new Script("ctx._source.title = \"git入门\"", ScriptService.ScriptType.INLINE, null, null)).get();

2.2使用doc方式

client.prepareUpdate("blog", "article", "1").setDoc(jsonBuilder().startObject().field("content", "SVN与Git对比。。。").endObject()).get();

三、updateRequest


UpdateRequest updateRequest = new UpdateRequest("blog", "article", "1").doc(jsonBuilder().startObject().field("commet", "0").endObject());client.update(updateRequest).get();

这种方式可以新增字段。

四、upsert


如果文档不存在则创建新的索引.

IndexRequest indexRequest = new IndexRequest("blog", "article", "10").source(jsonBuilder().startObject().field("title", "Git安装10").field("content", "学习目标 git。。。10").endObject());UpdateRequest uRequest2 = new UpdateRequest("blog", "article", "10").doc(jsonBuilder().startObject().field("title", "Git安装").field("content", "学习目标 git。。。").endObject()).upsert(indexRequest);client.update(uRequest2).get();

这个例子中,如果blog/article/10存在,那么根据UpdateRequest更新索引;如果不存在,新建indexRequest索引.

五、java demo


package cn.com.bropen.es;import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.concurrent.ExecutionException;import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.script.Script;
import org.elasticsearch.script.ScriptService;import static org.elasticsearch.common.xcontent.XContentFactory.*;public class ElasticSearchUpdate {private static Client client;public static void main(String[] args) {try {// client startupclient = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));} catch (UnknownHostException e) {e.printStackTrace();}upMethod1();}public static void upMethod1() {try {// 方法一:创建一个UpdateRequest,然后将其发送给client.UpdateRequest uRequest = new UpdateRequest();uRequest.index("blog");uRequest.type("article");uRequest.id("22");uRequest.doc(jsonBuilder().startObject().field("content", "学习目标 掌握java泛型的产生意义ssss").endObject());client.update(uRequest).get();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}public static void upMethod2() {// 方法二:prepareUpdate() 使用脚本更新索引client.prepareUpdate("blog", "article", "1").setScript(new Script("ctx._source.title = \"git入门\"", ScriptService.ScriptType.INLINE, null, null)).get();}public static void upMethod3() {// 方法三:prepareUpdate() 使用doc更新索引try {client.prepareUpdate("blog", "article", "1").setDoc(jsonBuilder().startObject().field("content", "SVN与Git对比。。。").endObject()).get();} catch (IOException e) {e.printStackTrace();}}public static void upMethod4() {// 方法四: 增加新的字段try {UpdateRequest updateRequest = new UpdateRequest("blog", "article", "1").doc(jsonBuilder().startObject().field("commet", "0").endObject());client.update(updateRequest).get();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}public static void upMethod5() {// 方法五:upsert 如果文档不存在则创建新的索引try {IndexRequest indexRequest = new IndexRequest("blog", "article", "10").source(jsonBuilder().startObject().field("title", "Git安装10").field("content", "学习目标 git。。。10").endObject());UpdateRequest uRequest2 = new UpdateRequest("blog", "article", "10").doc(jsonBuilder().startObject().field("title", "Git安装").field("content", "学习目标 git。。。").endObject()).upsert(indexRequest);client.update(uRequest2).get();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}
}

ElasticSearch Java Api(三) -更新索引库相关推荐

  1. ElasticSearch Java Api(四) -删除索引

    删除可以是删除整个索引库,也可以根据文档id删除索引库下的文档,还可以通过query查询条件删除所有符合条件的数据. 一.删除整个索引库 下面的例子会删除indexName索引: DeleteInde ...

  2. ElasticSearch Java Api(一) -创建索引

    ElasticSearch Java API官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/jav ...

  3. Elasticsearch Java API 分组、聚合、嵌套相关查询

    Elasticsearch Java API 分组.聚合.嵌套相关查询 翼支付监控系统正使用es做后端存储,这边我们是将日志计算处理过后的数据通过kafka储存到es.选择用es作为数据储存端是考虑到 ...

  4. Elasticsearch Java API 很全的整理以及架构剖析

    Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...

  5. Elasticsearch RestHighLevelClient 已标记为被弃用 它的替代方案 Elasticsearch Java API Client 的基础教程及迁移方案

    在Elasticsearch7.15版本之后,Elasticsearch官方将它的高级客户端RestHighLevelClient标记为弃用状态.同时推出了全新的Java API客户端Elastics ...

  6. SpringBoot整合最新Elasticsearch Java API Client 7.16教程

    文章目录 前言 一.Elasticsearch和Kibana 7.16版本安装 二.pom.xml文件引入依赖 三.代码实例 总结 前言 最新在学习SpringBoot整合es的一些知识,浏览了网上的 ...

  7. Elasticsearch8.0版本中Elasticsearch Java API Client客户端的基本使用方法

    关于Elasticsearch Java API Client客户端如何连接以及如何对索引和文档进行基本的增删改查操作请查看我的上一篇博文:Elasticsearch RestHighLevelCli ...

  8. Elasticsearch Java API 6.2(java client)

    前言 本节描述了Elasticsearch提供的Java API,所有的Elasticsearch操作都使用客户端对象执行,所有操作本质上都是完全异步的(要么接收监听器,要么未来返回). 此外,客户端 ...

  9. Elasticsearch Java API四种实现方式

    0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...

最新文章

  1. Nature:iHMP之“微生物组与炎症性肠病”
  2. gps matlab teqc,TEQC multipath metrics in MATLAB
  3. 开源短地址_如何在短短5分钟内完成您的第一个开源贡献
  4. 手机局域网html,手机遥控电脑开机神器!局域网唤醒App
  5. 对接物联网设备tcp协议_什么是物联网?常见IoT协议最全讲解
  6. 25 岁的 JavaScript 都经历了什么?
  7. Makingware调用静态块,实现自定义html内容的常用方法(不需要修改模版部分)...
  8. 数值分析方程求根实验matlab,基于matlab的数值分析( 非线性方程求根)上机实验报告1...
  9. 在 Delphi 下使用 DirectSound (1): 枚举播放设备
  10. 动画图解:十大经典排序算法动画与解析
  11. 娱乐视频直播背后的技术支持——DASH重构
  12. 常用颜色RGB表 色值
  13. 企业发展必不可缺——BPM系统
  14. 赠书:支付平台架构业务、规划、设计与实现
  15. 信不信?各种红包 App 最后都会整合游戏!App+游戏的变现模式分析
  16. 管理经济分析01:博弈论与经济学
  17. DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”
  18. 英语听力,口语常见的三个简读/略读/变读
  19. R语言使用factor函数处理名义变量(nominal、无序/标称分类变量)、使用ordered函数处理序数变量(ordinal、有序分类/标称变量)
  20. 《黑客大曝光:移动应用安全揭秘及防护措施》一3.3 越狱:发泄愤怒

热门文章

  1. [转] createObjectURL方法 实现本地图片预览
  2. React 的性能优化(一)当 PureComponent 遇上 ImmutableJS
  3. Python实现链表
  4. 知识产权基础(上、下)
  5. 一文讲清HBase的存储结构
  6. Java基础-异常(Exception)处理
  7. 10.Redis 性能测试
  8. Linux命令(2):free
  9. unity, access standard shared emission by script
  10. SpringCloud成长之路 一 注册与发现(Eureka)