微服务之elasticsearch之RestClient查询文档

快速入门

我们通过match_all来演示下基本的API,先看请求DSL的组织:

@Test
void testMatchAll() throws IOException {
    // 1.准备Request
    SearchRequest request = new SearchRequest("hotel");
    // 2.组织DSL参数 
    request.source()
    .query(QueryBuilders.matchAllQuery());
    // 3.发送请求,得到响应结果
    SearchResponse response = client.search(request, RequestOptions.DEFAULT);
    // ...解析响应结果
}

 

 

 

 

 

 

RestAPI中其中构建DSL是通过HighLevelRestClient中的resource()来实现的,其中包含了查询、排序、分页、高亮等所有功能:

 

 

 

RestAPI中其中构建查询条件的核心部分是由一个名为QueryBuilders的工具类提供的,其中包含了各种查询方法:

 

 

 

查询的基本步骤是: 创建SearchRequest对象 准备Request.source(),也就是DSL。 QueryBuilders来构建查询条件 传入Request.source() 的 query() 方法 发送请求,得到结果 解析结果(参考JSON结果,从外到内,逐层解析)

 

 

全文检索查询

 

 

 

精确查询

 

 

 

复合查询-boolean query

精确查询常见的有term查询和range查询,同样利用QueryBuilders实现:

 

 

排序和分页:

//页码,每页大小
        int page=1 ,size = 5;
        //准备request
        SearchRequest request = new SearchRequest("hotel");
        //准备DSL
        request.source().query(QueryBuilders.matchAllQuery());
        //排序
        request.source().sort("price", SortOrder.ASC);
        //分页
        request.source().from((page-1)*size).size(5);
        //发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        extracted(response);
        System.out.println(response);

 

高亮:

 

 

 

posted @ 2022-12-02 16:40  无火祭祀场  阅读(50)  评论(0)    收藏  举报