Elasticsearch与Linux(第九天)-在IDEA下操作es (2)

1.match query

    /**
     * 一个string 在一个字段
     * 查询一个字段
     * match query
     */
    @Test
    public void match() {

        QueryBuilder builder = QueryBuilders.matchQuery("interests", "changge");

        SearchResponse response = client.prepareSearch("lib3")
                .setQuery(builder)
                .setSize(3)
                .get();

        SearchHits hits = response.getHits();
        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }

    }

2.multiMatchQuery

    /**
     * 一个string 在多个字段
     * 查询多个字段
     */
    @Test
    public void match_Query() {

        QueryBuilder builder = QueryBuilders.multiMatchQuery("changge", "address", "interests");

        SearchResponse response = client.prepareSearch("lib3")
                .setQuery(builder)
                .setSize(3)
                .get();

        SearchHits hits = response.getHits();
        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
    }

3.term 查询

    /**
     * 一个字段含有一个string
     * term 查询
     */
    @Test
    public void term() {

        QueryBuilder builder = QueryBuilders.termQuery("interests", "changge");

        SearchResponse response = client.prepareSearch("lib3")
                .setQuery(builder)
                .setSize(3)
                .get();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }

    }

4.terms 查询

   /**
     * 一个字段含有多个string
     * terms 查询
     */
    @Test
    public void terms() {


        QueryBuilder builder = QueryBuilders.termsQuery("interests", "changge", "tiaowu");

        SearchResponse response = client.prepareSearch("lib3")
                .setQuery(builder)
                .setSize(3)
                .get();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
    }

5.各种查询

    /**
     * 各种查询
     */
    @Test
    public void selectM() {

        // range查询
        // QueryBuilder builder = QueryBuilders.rangeQuery("birthday").from("1990-01-01").to("2000-01-01");

        // prefix查询 (前置查询)
        // QueryBuilder builder = QueryBuilders.prefixQuery("name","zhao");

        // wildcard查询
        // QueryBuilder builder = QueryBuilders.wildcardQuery("name","zhao*");

        // fuzzy查询(模糊查询)
        // QueryBuilder builder = QueryBuilders.fuzzyQuery("interests", "changge");

        // type查询
        // QueryBuilder builder = QueryBuilders.typeQuery("blog");

        // id查询
        QueryBuilder builder = QueryBuilders.idsQuery().addIds("1","3");

        SearchResponse response = client.prepareSearch("lib3")
                .setQuery(builder)
                .setSize(3)
                .get();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
    }

6.全文查询

    /**
     * 全文查询
     */
    @Test
    public void queryString(){

        // QueryBuilder builder = QueryBuilders.commonTermsQuery("name","zhaoliu");

        // 精确查找:+ 必须含有, - 不含有
        // QueryBuilder builder = QueryBuilders.queryStringQuery("+changge -hejiu");

        // 满足一个就能查出来
        QueryBuilder builder = QueryBuilders.simpleQueryStringQuery("+changge -hejiu");

        SearchResponse response = client.prepareSearch("lib3")
                .setQuery(builder)
                .setSize(3)
                .get();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
    }

7.组合查询

    // 组合查询
    @Test
    public void test4(){

//        QueryBuilder builder = QueryBuilders.boolQuery()
//                .must(QueryBuilders.matchQuery("interests","cahngge"))
//                .mustNot(QueryBuilders.matchQuery("interests","lvyou"))
//                .should(QueryBuilders.matchQuery("address","bei jing"))
//                .filter(QueryBuilders.rangeQuery("birthday").gte("1990-01-01").format("yyyy-MM-dd"));

        // constantscore

        QueryBuilder builder = QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("name","zhaoliu"));

        SearchResponse response = client.prepareSearch("lib3")
                .setQuery(builder)
                .setSize(3)
                .get();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_37208650/article/details/82590137