RestClient的一些基本操作笔记(索引和文档)

1.ES索引的操作

@SpringBootTest
public class HotelIndexTest {
    private RestHighLevelClient client;
    
    //创建索引库
    @Test
    void createHotelIndex() throws IOException {
        //1.创建request对象
        CreateIndexRequest request = new CreateIndexRequest("hotel");
        //2.准备请求的参数
        request.source(MAPPING_TEMPLATE, XContentType.JSON);
        //3.发送请求
        client.indices().create(request, RequestOptions.DEFAULT);
    }

    //删除索引
    @Test
    void deleteHotelIndex() throws IOException {
        //1.创建request对象
        DeleteIndexRequest request = new DeleteIndexRequest("hotel");
        //2.发送请求
        client.indices().delete(request, RequestOptions.DEFAULT);
    }

    //查询索引
    @Test
    void selectIndexTest() throws IOException {
        //1.创建request对象
        GetIndexRequest request = new GetIndexRequest("hotel");
        //2.发送请求
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        System.err.println(exists ? "索引库存在" : "索引库不存在");
    }



    @BeforeEach
    void setUp(){
        this.client = new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://192.168.154.133:9200")
        ));
    }
    @AfterEach
    void tearDown() throws IOException {
        this.client.close();
    }

}

创建索引

 

 

2.对文档的操作

新增

 

//    添加文档
    @Test
    void addDocumentTest() throws IOException {
        Hotel hotel = iHotelService.getById(61083L);
        //类型转换为文档类型
        HotelDoc hotelDoc = new HotelDoc(hotel);
//        1准备request对象
        IndexRequest request = new IndexRequest("hotel").id(hotel.getId().toString());
//        2准备Json文档
        request.source(JSON.toJSONString(hotelDoc),XContentType.JSON);
//        3发送请求
        client.index(request,RequestOptions.DEFAULT);
        System.err.println();
    }

 查询

//    查询文档
    @Test
    void selectDocumentTest() throws IOException {
//        创建request对象
        GetRequest request = new GetRequest("hotel", "61083");
//        发送请求,得到结果
        GetResponse getResponse = client.get(request, RequestOptions.DEFAULT);
//        解析json数据
        String json = getResponse.getSourceAsString();
        System.err.println(json);
    }

修改

 

 

//    更新文档
    @Test
    void testUpdateDocumentByIdTest() throws IOException {
//        创建request对象
        UpdateRequest request = new UpdateRequest("hotel", "30  9208");
//        准备参数
        request.doc(
                "isAD",true
        );
        client.update(request,RequestOptions.DEFAULT);
    }

删除文档

//    删除文档
    @Test
    void deleteDocumentTest() throws IOException {
        DeleteRequest request = new DeleteRequest("hotel", "61083");
        client.delete(request,RequestOptions.DEFAULT);
    }

 添加所有

//    添加所有
    @Test
    void addAllDocumentTest() throws IOException {
        List<Hotel> hotels = iHotelService.list();
//        1准备request对象
        BulkRequest request = new BulkRequest();
//        2准备添加多个request
        for (Hotel hotel :hotels) {
            HotelDoc hotelDoc = new HotelDoc(hotel);
//            创建request对象
            request.add(new IndexRequest("hotel")
                    .id(hotelDoc.getId().toString())
                    .source(JSON.toJSONString(hotelDoc),XContentType.JSON));
        }
//        3发请求
        client.bulk(request,RequestOptions.DEFAULT);
    }

 查询操作

1查询所有

//    查询所有
    @Test
    void matchAllTest() throws IOException {
//        1.创建request对象
        SearchRequest request = new SearchRequest("hotel");
//        2.准备DSL
        request.source().query(QueryBuilders.matchAllQuery());
//        3。发送request请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        4.解析结果
        SearchHits hits = response.getHits();
        long total = hits.getTotalHits().value;
        System.out.println("一共有"+total+"条数据");
//        5.查询的结果数组
        SearchHit[] hits1 = hits.getHits();
        for (SearchHit hit :hits1) {
            String json = hit.getSourceAsString();
            JSON.parseObject(json, HotelDoc.class);
            System.out.println(json);
        }
    }

2.matchQuery all字段中上海的数据

@Test
    void matchAll() throws IOException {
//        1.创建request对象
        SearchRequest request = new SearchRequest("hotel");
//        2.准备DSL
        request.source().query(QueryBuilders.matchQuery("all","上海"));
//        3。发送request请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        4.解析结果
        SearchHits hits = response.getHits();
        long total = hits.getTotalHits().value;
        System.out.println("一共有"+total+"条数据");
//        5.查询的结果数组
        SearchHit[] hits1 = hits.getHits();
        for (SearchHit hit :hits1) {
            String json = hit.getSourceAsString();
            JSON.parseObject(json, HotelDoc.class);
            System.out.println(json);
        }
    }

精确查询 和价格范围查询

@Test
    void termTest() throws IOException {
//        1.创建request对象
        SearchRequest request = new SearchRequest("hotel");
//        2.准备DSL
//        精确查询
//        request.source().query(QueryBuilders.termQuery("name","家"));
//        价格范围查询
        request.source().query(QueryBuilders.rangeQuery("price").gte(100).lte(1000));
//        3。发送request请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        4.解析结果
        SearchHits hits = response.getHits();
        long total = hits.getTotalHits().value;
        System.out.println("一共有"+total+"条数据");
//        5.查询的结果数组
        SearchHit[] hits1 = hits.getHits();
        for (SearchHit hit :hits1) {
            String json = hit.getSourceAsString();
            JSON.parseObject(json, HotelDoc.class);
            System.out.println(json);
        }
    }

组合查询

    @Test
    void boolQueryTest() throws IOException {
//        1.创建request对象
        SearchRequest request = new SearchRequest("hotel");
//        2.准备DSL
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//        2.2添加must条件
        boolQueryBuilder.must(QueryBuilders.termQuery("city","北京"));
//        2.3添加filter条件
        boolQueryBuilder.filter(QueryBuilders.rangeQuery("price").lte(2000));
//        2.4 将条件加入到request中去
        request.source().query(boolQueryBuilder);
//        3。发送request请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        4.解析结果
        SearchHits hits = response.getHits();
        long total = hits.getTotalHits().value;
        System.out.println("一共有"+total+"条数据");
//        5.查询的结果数组
        SearchHit[] hits1 = hits.getHits();
        for (SearchHit hit :hits1) {
            String json = hit.getSourceAsString();
            JSON.parseObject(json, HotelDoc.class);
            System.out.println(json);
        }
    }

分页和高亮

//    分页排序
@Test
void sizeTest() throws IOException {
        int page=1,size=5;
//        1.创建request对象
    SearchRequest request = new SearchRequest("hotel");
    request.source().from((page-1)*size).size(size).sort("price", SortOrder.ASC);
//        3。发送request请求
    SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        4.解析结果
    SearchHits hits = response.getHits();
    long total = hits.getTotalHits().value;
    System.out.println("一共有"+total+"条数据");
//        5.查询的结果数组
    SearchHit[] hits1 = hits.getHits();
    for (SearchHit hit :hits1) {
        String json = hit.getSourceAsString();
        JSON.parseObject(json, HotelDoc.class);
        System.out.println(json);
    }
}
//高亮查询
    @Test
    void hightLightTest() throws IOException {
//        1.创建request对象
        SearchRequest request = new SearchRequest("hotel");
//        2.准备DSL
        request.source().query(QueryBuilders.matchQuery("all","北京"));
        request.source().highlighter(new HighlightBuilder().field("name").requireFieldMatch(false));

//        3。发送request请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        4.解析结果
        SearchHits hits = response.getHits();
        long total = hits.getTotalHits().value;
        System.out.println("一共有"+total+"条数据");
//        5.查询的结果数组
        SearchHit[] hits1 = hits.getHits();
        for (SearchHit hit :hits1) {
            String json = hit.getSourceAsString();
            JSON.parseObject(json, HotelDoc.class);
            System.out.println(json);
        }
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值