新增文档
- 1)创建Request对象
- 2)准备请求参数,也就是DSL中的JSON文档
- 3)发送请求
代码示例:
点击查看代码
//新增文档
@Test
public void addDoc() throws Exception{
//根据id查出酒店数据
Hotel hotel = iHotelService.getById(36934L);
//将酒店数据转换为文档类型
HotelDoc hotelDoc = new HotelDoc(hotel);
//将文档型酒店数据转为json字符串
String hotleJson = JSON.toJSONString(hotelDoc);
//准备request对象
IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());
//准备Json文档
request.source(hotleJson, XContentType.JSON);
//发送请求
client.index(request, RequestOptions.DEFAULT);
}
查看文档
- 1)准备Request对象。这次是查询,所以是GetRequest
- 2)发送请求,得到结果。因为是查询,这里调用client.get()方法
- 3)解析结果,就是对JSON做反序列化
代码示例
点击查看代码
//查看文档
@Test
public void getDoc() throws Exception{
//准备request对象
GetRequest request = new GetRequest("hotel", String.valueOf(36934L));
//发送请求
GetResponse response = client.get(request, RequestOptions.DEFAULT);
//解析结果
String json = response.getSourceAsString();
HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
System.out.println(hotelDoc);
}
修改文档
- 1)准备Request对象。这次是修改,所以是UpdateRequest
- 2)准备参数。也就是JSON文档,里面包含要修改的字段
- 3)更新文档。这里调用client.update()方法
代码示例
点击查看代码
//修改文档
@Test
public void editDoc() throws Exception{
//创建request对象
UpdateRequest request = new UpdateRequest("hotel", String.valueOf(36934L));
//准备参数,每两个参数为一对:key-value
request.doc(
"price",100,
"starName","五星"
);
//更新文档
client.update(request,RequestOptions.DEFAULT);
}
删除文档
- 1)准备Request对象,因为是删除,这次是DeleteRequest对象。要指定索引库名和id
- 2)准备参数,无参
- 3)发送请求。因为是删除,所以是client.delete()方法
代码示例
点击查看代码
//删除文档
@Test
public void deleteDoc() throws Exception{
//准备request对象
DeleteRequest request = new DeleteRequest("hotel", String.valueOf(36934L));
//发送请求
client.delete(request,RequestOptions.DEFAULT);
}
批量新增
- 1)创建Request对象。这里是BulkRequest
- 2)准备参数。批处理的参数,就是其它Request对象,这里就是多个IndexRequest
- 3)发起请求。这里是批处理,调用的方法为client.bulk()方法
代码示例
点击查看代码
//批量新增文档
@Test
public void bulkDoc() throws Exception{
List<Hotel> hotelList = iHotelService.list();
//创建bulkRequest对象
BulkRequest bulkRequest = new BulkRequest();
//准备参数,添加多个新增的request
//添加要批量提交的请求
for (int i = 0; i < hotelList.size(); i++) {
Hotel hotel = hotelList.get(i);
//转换为文档类型hotelDoc
HotelDoc hotelDoc = new HotelDoc(hotel);
//创建新增文档的request对象
bulkRequest.add(new IndexRequest("hotel")
.id(hotelDoc.getId().toString())
.source(JSON.toJSONString(hotelDoc),XContentType.JSON));
}
//发起bulk请求
client.bulk(bulkRequest,RequestOptions.DEFAULT);
}