Java High Level Rest Client---操作文档

发布时间 2023-06-03 13:39:59作者: wzh_Official

新增文档

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