文档章节

elasticsearch Java API 之Update API

想不通的250
 想不通的250
发布于 2015/06/09 10:18
字数 335
阅读 190
收藏 0
// 可以生成一个updateRequest对象来进行更新
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("index");//索引名称
updateRequest.type("type");//类型
updateRequest.id("1");//索引ID
updateRequest.doc(jsonBuilder()
        .startObject()
            .field("gender", "male")
        .endObject());//传入要修改的字段及值
client.update(updateRequest).get();

    或者使用 prepareUpdate方式,这种可能看起来比较简洁。

// 方式一,script,你可以使用本地存储的script,但是参数处应改为:ScriptService.ScriptType.FILE
client.prepareUpdate("ttl", "doc", "1")
        .setScript("ctx._source.gender = \"male\""  , ScriptService.ScriptType.INLINE)
        .get();
// 方式二,这种方式会将文档合并到存在的文档(1)中去。
client.prepareUpdate("ttl", "doc", "1")
        .setDoc(jsonBuilder()               
            .startObject()
                .field("gender", "male")
            .endObject())
        .get();

  注意:不能同时使用方式一和方式二。

使用script 更新

UpdateRequest updateRequest = new UpdateRequest("ttl", "doc", "1")
        .script("ctx._source.gender = \"male\"");
client.update(updateRequest).get();

通过合并文件更新

UpdateRequest updateRequest = new UpdateRequest("index", "type", "1")
        .doc(jsonBuilder()
            .startObject()
                .field("gender", "male")
            .endObject());
client.update(updateRequest).get();

Upsert方式

IndexRequest indexRequest = new IndexRequest("index", "type", "1")
        .source(jsonBuilder()
            .startObject()
                .field("name", "Joe Smith")
                .field("gender", "male")
            .endObject());

UpdateRequest updateRequest = new UpdateRequest("index", "type", "1")
        .doc(jsonBuilder()
            .startObject()
                .field("name", "Joe Dalton")
                .field("gender", "male")
            .endObject())
        .upsert(indexRequest);             
 client.update(updateRequest).get();

 如果文档原本不存在,那indexRequest就会被索引。那最后我们获取index/type/1的文档就是:

{
    "name"  : "Joe Smith",
    "gender": "male"        
}

 如果文档存在,那就会用到updateRequest,那最后我们获取index/type/1的文件就是:

{
    "name"  : "Joe Dalton",
    "gender": "male"        
}


 官网上的API逻辑感觉有点问题。



© 著作权归作者所有

想不通的250
粉丝 6
博文 107
码字总数 18851
作品 0
广州
程序员
私信 提问
ElasticSearch Client详解

从本文开始,将与大家进入到Elasticsearch的精妙世界中来,基于当前最新的6.4.x版本。 本文将重点探讨ElasticSearch Client的相关知识,重点关注TransportClient与Rest Client。Elasticsear...

丁威
03/10
0
0
bboss v5.2.1 发布,Elasticsearch Rest Client

The best Elasticsearch Highlevel Rest Client API-----bboss v5.2.1 发布。 主要功能特色 ElasticSearch兼容性:2.x,5.x,6.x,+ JDK兼容性: jdk 1.7+ Spring boot兼容性:1.x,2.x ORM和DSL二......

bboss
2018/11/27
617
2
Elasticsearch JDBC案例介绍

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3以后的版本可以通过jdbc操作es,该功能还在不断的完善当中,本文介绍es jdbc使用方法。 1.首先在工程中导入es ...

bboss
2018/09/30
1K
0
Elasticsearch 的 Java Http Rest 客户端 - Elasticsearch Jest

Jest 是 Elasticsearch 的 Java Http Rest 客户端。 ElasticSearch 已经具备应用于 Elasticsearch 内部的 Java API ,但是 Jest 弥补了 ES 自有 API 缺少 Elasticsearch Http Rest 接口客户端...

匿名
2018/08/15
1K
0
elasticsearch和mysql的数据同步采用哪种方案合适。

最近公司在使用elasticsearch,使用的是6.5版本的。其中有一个需求就是需要把数据库已有的数据同步到elasticsearch中来,调研了几种方案。 logstash,elasticsearch-jdbc,自己实现。 暂时采...

lanceli
03/18
700
5

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部