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頁面查看:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM