• 更新文档数据


    之前的更新文档操作

    PUT /website/blog/123
    {
      "title": "My first blog entry2",
      "text":  "I am starting to get the hang of this...",
      "date":  "2014/01/02"
    }
    
    
    POST /website/pageviews/1/_update
    {
       "script" : "ctx._source.view+=1",
       "upsert": {
           "views": 2
       }
    }

    1:方式1

    /**
     * UpdateRequest
     * //TODO // 对没有的字段添加, 对已有的字段替换
     * */
    @Test
    public void UpdateRequestDocument(){
    
        try {
            UpdateRequest updateRequest = new UpdateRequest();
            updateRequest.index("twitter4");
            updateRequest.type("tweet");
            updateRequest.id("1");
            updateRequest.doc(jsonBuilder()
                    .startObject()
                    .field("gender", "male")
                    .field("title", "ElasticSearch是一个基于Lucene的搜索服务器")
                    .field("content",
                            "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。" +
                                    "Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布," +
                                    "是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索," +
                                    "稳定,可靠,快速,安装使用方便。")
                    .endObject());
            UpdateResponse response = client.update(updateRequest).get();
            // 索引名称
            String _index = response.getIndex();
            // 类型
            String _type = response.getType();
            // 文档ID
            String _id = response.getId();
            // 版本
            long _version = response.getVersion();
            // 返回的操作状态
            RestStatus status = response.status();
            System.out.println("索引名称:"+_index+" "+"类型 :" +  _type + " 文档ID:"+_id+" 版本 :"+_version+" 返回的操作状态:"+status);
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    }

    2:方式2

    /**
     * XContentFactory
     */
    @Test
    public void XContentFactoryDocument() throws Exception {
        // 使用updateRequest对象进行更新
        final UpdateRequest updateRequest = new UpdateRequest();
        updateRequest.index("twitter");
        updateRequest.type("tweet");
        updateRequest.id("1");
    
        UpdateResponse response = transportClient
                .update(updateRequest.doc(XContentFactory.jsonBuilder()
                        .startObject()
                                .field("title", "什么是Elasticsearch,ElasticSearch是一个基于Lucene的搜索服务器")
                        .endObject()))
                .get();
        // 打印
        String index = response.getIndex();
        String type = response.getType();
        String id = response.getId();
        long version = response.getVersion();
        System.out.println(index + " : " + type + ": " + id + ": " + version);
    }

    3:方式3

    /**
     * upsert
     * */
    @Test
    public void upsertDocument() throws Exception {
        // 设置查询条件, 查找不到则添加
        IndexRequest indexRequest = new IndexRequest("twitter4", "tweet", "3")
                .source(XContentFactory.jsonBuilder()
                        .startObject()
                        .field("title", "666")
                        .field("content", "传智大数据")
                        .endObject());
        // 设置更新, 查找到更新下面的设置
        UpdateRequest upsert = new UpdateRequest("twitter4", "tweet", "3")
                .doc(XContentFactory.jsonBuilder()
                        .startObject()
                        .field("user", "tom")
                        .endObject())
                .upsert(indexRequest);
    
        client.update(upsert).get();
    
    }
  • 相关阅读:
    如何正确进行三/四元环计数
    Linux下基本命令
    E: Unable to locate package xxx
    Vim快捷键
    遍历Map的四种方法
    Coursera 算法基础,北京大学
    Openjudge 3342 字符串操作
    C++ 程序设计 Final 题目总结
    算法基础 Final 题目总结
    百度地图缩放偏移
  • 原文地址:https://www.cnblogs.com/niutao/p/10909227.html
Copyright © 2020-2023  润新知