Elasticsearch Java REST高级客户端Sear

2020-10-29  本文已影响0人  觉释

1.matchAllQuery查询

/**
     * matchAll查询
     */
    public static void matchAllQuery() {
        RestHighLevelClient client = getClient();
 
        // 这里可以不指定索引,也可以指定多个
        SearchRequest searchRequest = new SearchRequest("movies");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchRequest.source(searchSourceBuilder);
        searchSourceBuilder.query(QueryBuilders.matchAllQuery());
        // 从第一条开始,包括第一条
        searchSourceBuilder.from(0);
        // 查询30条
        searchSourceBuilder.size(3);
        // 先按year倒排
        searchSourceBuilder.sort(SortBuilders.fieldSort("year").order(SortOrder.DESC));
        // 再按id正排
        searchSourceBuilder.sort("id");
        SearchResponse search = null;
        try {
            search = client.search(searchRequest, RequestOptions.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
        search.getHits().forEach(System.out::println);
        close(client);
    }

2、matchQuery查询

/**
     * match查询
     */
    public static void matchQuery() {
        RestHighLevelClient client = getClient();
 
        // 这里可以不指定索引,也可以指定多个
        SearchRequest searchRequest = new SearchRequest("movies");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchRequest.source(searchSourceBuilder);
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", "you life");
        searchSourceBuilder.query(matchQueryBuilder);
//      // 模糊查询
//      matchQueryBuilder.fuzziness(Fuzziness.AUTO);
//      // 前缀查询的长度
//      matchQueryBuilder.prefixLength(3);
//      // max expansion 选项,用来控制模糊查询
//      matchQueryBuilder.maxExpansions(10);
        searchSourceBuilder.from(0);
        searchSourceBuilder.size(32);
        // 按评分排序
        searchSourceBuilder.sort("_score");
        SearchResponse search = null;
        try {
            search = client.search(searchRequest, RequestOptions.DEFAULT);
            search.getHits().forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            close(client);
        }
    }

3.termQuery查询

public static void termQuery() {
        RestHighLevelClient client = getClient();
        SearchRequest request = new SearchRequest("movies");
        SearchSourceBuilder builder = new SearchSourceBuilder();
        request.source(builder);
        builder.from(0);
        builder.size(5);
        builder.query(QueryBuilders.termQuery("title", "you"));
        SearchResponse search = null;
        try {
            search = client.search(request, RequestOptions.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
        search.getHits().forEach(System.out::println);
 
        close(client);
    }

4、创建和关闭客户端

/**
     * 关闭客户端
     * 
     * @param client
     */
    private static void close(RestHighLevelClient client) {
        try {
            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取客户端
     * 
     * @return
     */
    private static RestHighLevelClient getClient() {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(new HttpHost("elk-node01", 9200, "http"), new HttpHost("elk-node02", 9200, "http"),
                        new HttpHost("elk-node03", 9200, "http")));
        return client;
    }

4、 maven

       <dependency>
            <groupId>org.elasticsearch.plugin</groupId>
            <artifactId>x-pack-sql-jdbc</artifactId>
            <version>7.2.0</version>
<!--            <version>6.7.1</version> -->
        </dependency>
 
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.2.0</version>
<!--            <version>6.7.1</version> -->
        </dependency>

上一篇下一篇

猜你喜欢

热点阅读