继续上一篇未完成的,咱们继续看下半部分,关于ES文档的相关操作
JAVA文档操作
一、单个操作
1、添加文档
@Test
void testAddDocument() throws IOException {
// 1.创建对象
User user = new User("打工人",20);
// 2.创建请求
IndexRequest request = new IndexRequest("test_create_index");
// 3.规则 put /kuang_index/_doc/1
request.id("1");
request.timeout(TimeValue.timeValueSeconds(1));// 或者 request.timeout("1s");
// 4.把数据放入请求 json
IndexRequest source = request.source(JSON.toJSONString(user), XContentType.JSON);
// 5.客户端发送请求,获取响应结果
IndexResponse indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);
System.out.println(indexResponse.toString());// 结果的json
System.out.println(indexResponse.status());// 对应我们命令返回的状态 created
}
```
备注:这里的User是一个普通实体,自行建一个实体类即可。
执行后的结果如下,test_create_index这个索引中会插入一条记录
2、修改文档
@Test
void testUpdateDocument() throws IOException {
//1.准备需要修改的集合
Map<String, Object> doc = new HashMap<>();
doc.put("name", "杨光光打工人");
doc.put("age", 25);
String docId = "1";
//2.准备一个request对象(手动方式指定Id)
UpdateRequest request = new UpdateRequest("test_create_index", docId);
request.doc(doc);
//3.通过client修改文档
UpdateResponse response = restHighLevelClient.update(request, RequestOptions.DEFAULT);
//4.返回结果(成功的话会返回UPDATED)
System.out.println(response.getResult());
}
修改结果如下:
3、删除文档
@Test
void deleteUpdateDocument() throws IOException {
//1.指定要删除的文档id
String docId = "1";
DeleteRequest deleteRequest = new DeleteRequest("test_create_index", docId);
//2.通过client修改文档
DeleteResponse response = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
//3.返回结果(删除成功会返回DELETED)
System.out.println(response.getResult());
}
二、批量操作文档
1、批量增加文档
/**
* 特殊的,真实的项目一般都会批量插入数据
*/
@Test
void testBulkRequest() throws IOException {
BulkRequest bulkRequest = new BulkRequest();
//设置超时时间
bulkRequest.timeout("1s");
ArrayList<User> users = new ArrayList<>();
users.add(new User("张三", 1));
users.add(new User("里斯", 2));
users.add(new User("王五", 3));
users.add(new User("赵六", 4));
users.add(new User("田七", 5));
users.add(new User("王八", 6));
for (int i = 0; i < users.size(); i++) {
bulkRequest.add(new IndexRequest("test_create_index")
.id("" + (i + 1))// 不设置id,则会生成默认id
.source(JSON.toJSONString(users.get(i)), XContentType.JSON));
}
BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
// 是否失败,返回false代表成功
System.out.println(bulkResponse.hasFailures());
}
备注:注意返回false是表示成功。
2、批量删除文档
@Test
public void testBulkAdd() throws IOException {
//1.准备文档id集合
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
//2.创建request
BulkRequest bulkRequest = new BulkRequest();
for (String docId : list) {
bulkRequest.add(new DeleteRequest("test_create_index", docId));
}
//3.client执行
BulkResponse response = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
//4.返回结果
System.out.println(response);
}
删除后的结果:文档id为1,2,3的被干掉了