ElasticSearch 6.4 REST-API(3)--------查询数据

        日常使用最多的就是查询数据了,这里主要是查询数据的包装,具体实现方法包含同步异步,都有client实现,(异步需要监听下),具体见下

       1、创建client

 public static RestHighLevelClient  getClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost(ES_IP, ES_PORT, "http")));
        return client;
    }

2、简单获取,根据index、type、id获取文档

/**
     * 根据index、type、id查询
     * @param index
     * @param type
     * @param id
     * @return
     * @throws Exception
     */
    public static GetResponse get(String index,String type,String id) throws Exception{
        RestHighLevelClient restClient = getClient();
        GetResponse  getResponse = null;
        try {
            GetRequest getRequest = new GetRequest(index, type, id);
            getResponse = restClient.get(getRequest, RequestOptions.DEFAULT);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            restClient.close();
        }
        return getResponse;
    }

3、search

/**
     * 用于有条件搜索文件,汇总,提供高亮显示等任何操作。
     * @param index
     * @param type
     * @param query
     * @return
     * @throws Exception
     */
    public static SearchResponse search(String index,String type,String query) throws Exception{
        RestHighLevelClient restClient = getClient();
        SearchResponse  searchResponse = null;
        try {
            SearchRequest searchRequest = new SearchRequest(index);
            searchRequest.types(type);
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            // 1.查询index、type中 name包含“懿”的所有文档
            //searchSourceBuilder.query(QueryBuilders.termQuery("name","懿"));

            // 2.查询index、type中 name包含"懿"或"习"的所有文档
            //searchSourceBuilder.query(QueryBuilders.termsQuery("name","懿","习"));

            // 3.查询index 、type中 name包含"懿"或者age 为18或19的所有文档
            //searchSourceBuilder.query(QueryBuilders.termsQuery("name","懿"));
            //searchSourceBuilder.query(QueryBuilders.termsQuery("age","18","24"));

            //4.查询index 、type中 name包含"懿"或"习",并且age 为24的所有文档
            //searchSourceBuilder.query(QueryBuilders.boolQuery()
            //        .must(QueryBuilders.termsQuery("name","懿","习"))
            //       .must(QueryBuilders.termsQuery("age","24")));

            searchRequest.source(searchSourceBuilder);
            searchResponse = restClient.search(searchRequest, RequestOptions.DEFAULT);

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            restClient.close();
        }
        return searchResponse;
    }

猜你喜欢

转载自blog.csdn.net/w20228396/article/details/82558344
6.4
今日推荐