Elasticsearch-Java API操作(一)API基本操作(11)【更新文档数据(upsert)】
Posted on 2020-08-17 07:44 MissRong 阅读(876) 评论(1) 收藏 举报大数据技术之Elasticsearch-Java API操作(一)API基本操作
更新文档数据(upsert)
设置查询条件, 查找不到则添加IndexRequest内容,查找到则按照UpdateRequest更新。
|
@Test public void testUpsert() throws Exception {
// 设置查询条件, 查找不到则添加 IndexRequest indexRequest = new IndexRequest("blog", "article", "5") .source(XContentFactory.jsonBuilder().startObject().field("title", "搜索服务器").field("content","它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。").endObject());
// 设置更新, 查找到更新下面的设置 UpdateRequest upsert = new UpdateRequest("blog", "article", "5") .doc(XContentFactory.jsonBuilder().startObject().field("user", "李四").endObject()).upsert(indexRequest);
client.update(upsert).get(); client.close(); } |
第一次执行
hadoop102:9200/blog/article/5

第二次执行
hadoop102:9200/blog/article/5

****自己操作****
Java代码:
// 八、更新文档-upsert
@Test
public void updateOrInsertData() throws Exception {
// 设置查询条件, 查找不到("blog", "article", "5")则添加
IndexRequest indexRequest = new IndexRequest("blog", "article", "5")
.source(XContentFactory.jsonBuilder().startObject().field("title", "基于Lucene的搜索服务器")
.field("content", "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。大数据前景无限").endObject());
// 设置更新, 查找("blog", "article", "5")就更新下面的设置
UpdateRequest upsert = new UpdateRequest("blog", "article", "5")
.doc(XContentFactory.jsonBuilder().startObject().field("user", "李四").endObject()).upsert(indexRequest);
client.update(upsert).get();
client.close();
}
结果:
原数据:
之前的数据中_id是没有等于5的

操作一次之后的数据:
操作一次后_id就有等于5的了--这里的第一条数据即是新增的:


操作两次之后的数据:
第二次修改可见第一条数据又在原来的基础上新增了一列-user值为“李四”:

浙公网安备 33010602011771号