SpringBoot项目中关于ES的一些实操(下)

70 阅读1分钟

继续上一篇未完成的,咱们继续看下半部分,关于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这个索引中会插入一条记录

image.png

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());
}

修改结果如下:

image.png

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的被干掉了

image.png