一,DSL语句
1,新增文档:

2,查询文档和删除文档:
 ,3修改文档
,3修改文档
修改有两种方式:
-  全量修改:直接覆盖原来的文档 
-  增量修改:修改文档中的部分字段 
全量修改
全量修改是覆盖原来的文档,其本质是:
-  根据指定的id删除文档 
-  新增一个相同id的文档 
注意:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。
语法:
PUT /{索引库名}/_doc/文档id
{"字段1": "值1","字段2": "值2",// ... 略
} 
示例:
PUT /heima/_doc/1
{"info": "黑马程序员高级Java讲师","email": "zy@itcast.cn","name": {"firstName": "云","lastName": "赵"}
}
 
增量修改
增量修改是只修改指定id匹配的文档中的部分字段。
语法:
POST /{索引库名}/_update/文档id
{"doc": {"字段名": "新的值",}
}
 
示例:
二,Java代码
创建文档:

 //创建文档@Testvoid testAddDocument() throws IOException {//1,根据id查询出数据库酒店数据Hotel hotel = hotelService.getById(61083L);//2,转换为文档类型HotelDoc hotelDoc = new HotelDoc(hotel);//3,将HotelDoc转JsonString json = JSON.toJSONString(hotelDoc);//1,准备Request对象IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());//2,准备Json文档request.source(json,XContentType.JSON);//3,发送请求client.index(request,RequestOptions.DEFAULT);}查询文档;

 
 //查询文档@Testvoid testGetDocumentById() throws IOException {// 1.准备RequestGetRequest request = new GetRequest("hotel", "61083");// 2.发送请求,得到响应GetResponse response = client.get(request, RequestOptions.DEFAULT);// 3.解析响应结果String json = response.getSourceAsString();HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);System.out.println(hotelDoc);}更新文档;

//更新文档@Testvoid testUpdateDocument() throws IOException {// 1.准备RequestUpdateRequest request = new UpdateRequest("hotel", "61083");// 2.准备请求参数request.doc("price", "952","starName", "四钻");// 3.发送请求client.update(request, RequestOptions.DEFAULT);}删除文档;
 //删除文档@Testvoid testDeleteDocument() throws IOException {//1,准备RequestDeleteRequest request = new DeleteRequest("hotel", "61083");//3,发送请求client.delete(request,RequestOptions.DEFAULT);}批量添加文档;
批量处理BulkRequest,其本质就是将多个普通的CRUD请求组合在一起发送。
其中提供了一个add方法,用来添加其他请求:

可以看到,能添加的请求包括:
-  IndexRequest,也就是新增 
-  UpdateRequest,也就是修改 
-  DeleteRequest,也就是删除 
因此Bulk中添加了多个IndexRequest,就是批量新增功能了。示例:

//批量创建文档@Testvoid testBulkRequest() throws IOException {// 批量查询酒店数据List<Hotel> hotels = hotelService.list();// 1.创建RequestBulkRequest request = new BulkRequest();// 2.准备参数,添加多个新增的Requestfor (Hotel hotel : hotels) {// 2.1.转换为文档类型HotelDocHotelDoc hotelDoc = new HotelDoc(hotel);// 2.2.创建新增文档的Request对象request.add(new IndexRequest("hotel").id(hotelDoc.getId().toString()).source(JSON.toJSONString(hotelDoc), XContentType.JSON));}// 3.发送请求client.bulk(request, RequestOptions.DEFAULT);}