大数据技术之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值为“李四”:

 

 

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3