zoukankan      html  css  js  c++  java
  • es之java操作插入文档

    4方式:

    1、  使用json字符串直接创建
    2、  使用Map集合
    3、  使用第三方库来序列化  createDocumentBySerialize
    4、  使用内置的帮助器XContentFactory.jsonBuilder()

    1: 使用JSON字符串创建

    @Test
    public void createDocumentByManually(){
        String json = "{" +
                ""user":"kimchy"," +
                ""postDate":"2013-01-30"," +
                ""message":"trying out Elasticsearch"" +
                "}";
        //IndexRequestBuilder prepareIndex(String index, String type)
        final IndexResponse response  = this.transportClient.prepareIndex("twitter", "tweet")
                .setSource(json, XContentType.JSON).get();
        //获取索引
        final String _index = response.getIndex();
        //获取类型
        final 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);
    
    }

    2:使用Map集合

    @Test
    public void createDocumentByMap(){
        Map<String, Object> json = new HashMap<String, Object>();
        json.put("user","kimchy");
        json.put("postDate",new Date());
        json.put("message","trying out Elasticsearch");
        //this.transportClient.prepareIndex 可以传入id
        final IndexResponse response = this.transportClient.prepareIndex("twitter", "tweet")
                .setSource(json, XContentType.JSON).get();
        //获取索引
        final String _index = response.getIndex();
        //获取类型
        final 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);
    }

    3:使用第三方库来序列化

    /**
     *这种方式是使用jsckson来序列化一个bean的方式进行操作的
     * import com.fasterxml.jackson.databind.*;
     * */
    
    @Test
    public void createDocumentBySerialize(){
    
        try {
            // insstance a json mapper
            ObjectMapper mapper = new ObjectMapper(); // create once, reuse
            //构造一个类
            Person p = new Person();
            p.setUser("kimchy");
            p.setPostDate(new Date());
            p.setMessage("trying out Elasticsearch");
            // generate json
            byte[] json = mapper.writeValueAsBytes(p);
            IndexResponse response = this.client.prepareIndex("twitter3", "tweet")
                    .setSource(json, XContentType.JSON)
                    .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 (JsonProcessingException e) {
            e.printStackTrace();
        }
    }

    4:使用内置的帮助器jsonBuilder()

    @Test
    public void createDocumentByJsonBuilder(){
        XContentBuilder builder = null;
        try {
            builder = jsonBuilder()
                    .startObject()
                       .field("user", "kimchy")
                       .field("postDate", new Date())
                       .field("message", "trying out Elasticsearch")
                    .endObject();
            String json = builder.string();
            IndexResponse response = this.client.prepareIndex("twitter4", "tweet")
                    .setSource(json, XContentType.JSON)
                    .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 (IOException e) {
            e.printStackTrace();
        }
    
    }

    去elasticsearch的head页面查看:

     

  • 相关阅读:
    提问的智慧
    Linux下Tomcat的安装配置
    Advanced Puppet 系列的前言
    一个purge参数引发的惨案——从线上hbase数据被删事故说起
    从入门到精通Puppet的实践之路
    Juno Puppet Opertaors Meetup小结
    Openstack配置文件管理的变迁之路
    如何成为一名Top DevOps Engineer
    mod_wsgi的工作模式和配置
    解决PuppetDB Failed to submit 'replace facts'问题
  • 原文地址:https://www.cnblogs.com/niutao/p/10909204.html
Copyright © 2011-2022 走看看