9-RestClient批量添加文档数据

需求步骤

需求:利用BulkRequest批量将数据库数据导入到索引库中。

步骤如下:

  • 利用mybatis-plus查询酒店数据。

  • 将查询到的酒店数据(Hotel)转换为文档类型数据(HotelDoc)。

  • 利用JavaRestClient中的BulkRequest批处理,实现批量新增文档。

语法说明

批量处理BulkRequest,其本质就是将多个普通的CRUD请求组合在一起发送。

其中提供了一个add方法,用来添加其他请求:

可以看到,能添加的请求包括:

  • IndexRequest,也就是新增

  • UpdateRequest,也就是修改

  • DeleteRequest,也就是删除

因此Bulk中添加了多个IndexRequest,就是批量新增功能了。

单元测试

 1   /**
 2      * 批量添加数据库的数据
 3      * @throws IOException
 4      */
 5     @Test
 6     void testBulkRequest() throws IOException {
 7         // 查询数据库中所有的酒店数据
 8         List<Hotel> list = hotelService.list();
 9 
10         // 1.准备Request
11         BulkRequest request = new BulkRequest();
12         // 2.准备参数
13         for (Hotel hotel : list) {
14             // 2.1.转为HotelDoc
15             HotelDoc hotelDoc = new HotelDoc(hotel);
16             // 2.2.转json
17             String json = JSON.toJSONString(hotelDoc);
18             // 2.3.添加请求
19             request.add(new IndexRequest("hotel").id(hotel.getId().toString()).source(json, XContentType.JSON));
20         }
21 
22         // 3.发送请求
23         client.bulk(request, RequestOptions.DEFAULT);
24     }
View Code

其实还是三步走:

1)创建Request对象。这里是BulkRequest。

2)准备参数。批处理的参数,就是其它Request对象,这里就是多个IndexRequest。

3)发起请求。这里是批处理,调用的方法为client.bulk()方法。

posted @ 2022-08-21 16:42  JustJavaIt  阅读(271)  评论(0编辑  收藏  举报