使用java api和es交互时,可以是json字符串、map对象;es中内置Jackson json序列化机制,可以将自定义对象转成string或者byte,然后传给es-java api使用。
1、添加document:
public static boolean add(String indexName,String indexType,Map<String,Object> data){  
    IndexResponse actionGet = transportClient
        .prepareIndex(indexName, indexType)
        .setSource(data)
        //.setId("1") //自己设置了id,也可以使用ES自带的,但是看文档说,ES的会因为删除id发生变动。
        .execute().actionGet();
    return actionGet.isCreated();
}注:如果设置了id,那么id存在的则直接更新(所有字段覆盖更新)
2、更新document:
1)使用updateRequest:
public static void update(String indexName,String indexType,String id,Map<String,Object> data){
    UpdateRequest updateRequest = new UpdateRequest();
    updateRequest.index(indexName)
        .type(indexType)
        .id(id)
        .doc(data);
    
    transportClient.update(updateRequest).actionGet();
    
    //或者使用下面方式(效果一样)
    /*XContentBuilder jsonBuilder =XContentFactory.jsonBuilder();  
    
    UpdateRequest updateRequest = new UpdateRequest();
    updateRequest.index(indexName)
    .type(indexType)
    .id(id)
    .doc(jsonBuilder
        .startObject()
          .field("title").value("XContentBuilder")
        .endObject());
    
    transportClient.update(updateRequest).actionGet();*/
  }说明:
A、可以更新局部字段(map里有多少字段更新多少,也可以增加map里面新字段);
B、当id不存在时,不会自动插入,直接报错
 2)使用prepareUpdate:
public static void update1(String indexName,String indexType,String id,Map<String,Object> data){
    
    UpdateRequestBuilder prepareUpdate = transportClient.prepareUpdate(indexName,indexType,id);
    prepareUpdate
      .setDoc(data)
      //.setId("")
      //.setScript("")
      .get();
    
    //或者
    /*try {
      XContentBuilder jsonBuilder =XContentFactory.jsonBuilder();
      UpdateRequestBuilder prepareUpdate1 = transportClient.prepareUpdate(indexName,indexType,id);
      prepareUpdate1
        .setDoc(jsonBuilder
            .startObject()
              .field("title").value("XContentBuilder")
            .endObject())
        .get();
    } catch (IOException e) {
      e.printStackTrace();
    }*/
  } 3、删除document:
public static void delDocument(String indexName,String indexType,String id){  
    DeleteResponse deleteResponse = transportClient
        .prepareDelete(indexName, indexType, id)
        .execute().actionGet();
    deleteResponse.isFound();
  } 4、bulk操作: 
bulk是一个批量操作,可以一次请求完成document的增删改。
public static boolean bulk(String indexName,String indexType,List<Map<String,Object>> datas){
        BulkRequestBuilder bulkRequestBuilder = transportClient.prepareBulk();
        
        bulkRequestBuilder.add(transportClient.prepareIndex(indexName, indexType).setSource(datas.get(0)));
        bulkRequestBuilder.add(transportClient.prepareDelete(indexName, indexType, "id"));
        bulkRequestBuilder.add(transportClient.prepareUpdate(indexName, indexType, "id").setDoc(datas.get(1)));
        BulkResponse bulkResponse = bulkRequestBuilder.execute().actionGet();
        
        return bulkResponse.hasFailures();
    } 6、get 操作: 
可以通过索引名、类型名、文档id一次得到一个文档集合,文档可以来自同一个索引库,也可以来自不同索引库。
 1)get操作:
public static Map<String, Object> get(String indexName,String indexType,String id){  
        GetResponse getResponse = transportClient
                .prepareGet(indexName, indexType, id)
                .execute().actionGet();
        
        return getResponse.getSource();
    } 2)mutilget:
public static List<Map<String,Object>> multiGet(String indexName,String indexType,String... ids){
        List<Map<String,Object>> list = new ArrayList<>();
        MultiGetResponse response = transportClient.prepareMultiGet()
                .add(indexName,indexType,ids)
                .add("liu1","liu1_type","AV8-YHAr6f3B-qEudDab")//另一个index、indextype和ids
                .execute().actionGet();
        for(MultiGetItemResponse itemResponse:response){  
            GetResponse getResponse = itemResponse.getResponse();  
            if(getResponse.isExists()){
                list.add(getResponse.getSource());
                //System.out.println(getResponse.getSourceAsString());  
            }  
        }
        
        return list;
    }                










