ElasticSearch查询:分页和排序(9)

编程步骤

  • 创建Settings配置信息对象

  • 创建ES传输客户端对象

  • 创建搜索请求构建对象(封装查询条件、分页、排序)

  • 执行请求,得到搜索响应对象

  • 获取搜索结果

  • 迭代搜索结果

  • 释放资源

代码实现

/**
     *
     *  分页和排序
     *
     * @throws Exception
     */
    @Test
    public void test7() throws Exception {
        //1. 创建Settings配置信息对象
        Settings settings = Settings.builder().put("cluster.name","elasticsearch").build();

        //2. 创建ES传输客户端对象
        TransportClient transportClient = new PreBuiltTransportClient(settings);
        transportClient.addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"),9300));

        //3. 创建搜索请求构建对象(封装查询条件)(***)
        SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch("blog3").setTypes("article");
        searchRequestBuilder.setQuery(QueryBuilders.matchAllQuery());


        //设置分页参数
        int pageNum = 1;//页码
        int pageSize = 2;//页面大小
        searchRequestBuilder.setFrom((pageNum-1)*pageSize);//查询起始行号,从0开始的
        searchRequestBuilder.setSize(pageSize);//查询条数(页面大小)

        //设置排序参数
        /**
         * 参数一:需要排序的Field名称
         * 参数二:规则,升序和降序
         */
        searchRequestBuilder.addSort("id", SortOrder.ASC);


        //4. 执行请求,得到搜索响应对象
        SearchResponse searchResponse = searchRequestBuilder.get();

        //5. 获取搜索结果
        SearchHits hits = searchResponse.getHits();

        //6. 迭代搜索结果
        System.out.println("总命中数:"+hits.totalHits);
        for(SearchHit hit:hits){
            //取出结果
            //System.out.println(hit.getSourceAsMap());

            System.out.println(hit.getSourceAsMap().get("id"));
            System.out.println(hit.getSourceAsMap().get("title"));
            System.out.println(hit.getSourceAsMap().get("content"));

            System.out.println("===================");
        }

        //7. 释放资源
        transportClient.close();

    }

 

 

本站资源除特别声明外,转载文章请声明文章出处
东泰博客 » ElasticSearch查询:分页和排序(9)

发表评论

切图仔日常笔记博客