ElasticSearch學習(9)-Java接口查詢操做

java 接口操做ElasticSearch進行查詢

1.查詢全部數據java

SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
        SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).execute().actionGet();
        SearchHits hits =response.getHits();

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

執行結果:post

{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"}
{"name":"李四111","age":20,"address":"山東煙臺","email":"zhagnsan_smile@163.com"}
{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"}
{"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}

2.分頁查詢ui

SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
    SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).setFrom(0).setSize(3).execute().actionGet();
    for(SearchHit hit : hits){
     System.out.println(hit.getSourceAsString());
     }

執行結果:code

{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"}
{"name":"李四111","age":20,"address":"山東煙臺","email":"zhagnsan_smile@163.com"}
{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"}

3.排序查詢排序

SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
     SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).addSort("age", SortOrder.ASC).execute().actionGet();
    for(SearchHit hit : hits){
     System.out.println(hit.getSourceAsString());
     }

執行結果:接口

{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"}
{"name":"李四111","age":20,"address":"山東煙臺","email":"zhagnsan_smile@163.com"}
{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"}
{"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}
{"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}

4.數據列的過濾get

SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
    SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).addSort("age", SortOrder.ASC).setFetchSource(new String[]{"name","age"},null).execute().actionGet();
    for(SearchHit hit : hits){
     System.out.println(hit.getSourceAsString());
     }

執行結果:it

{"name":"張三222","age":20}
{"name":"李四111","age":20}
{"name":"張三","age":20}
{"name":"張三111","age":20}
{"name":"王五ggg","age":22}
{"name":"張三ggg","age":22}
{"name":"張三ggg","age":22}
{"name":"王五ggg","age":22}

5.簡單條件查詢io

SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
     SearchResponse response = srb.setQuery(QueryBuilders.matchQuery("name","張三")).setFetchSource(new String[]{"name","age"},null).execute().actionGet();

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

執行結果:ast

{"name":"張三","age":20}
{"name":"張三ggg","age":22}
{"name":"張三222","age":20}
{"name":"張三ggg","age":22}
{"name":"張三111","age":20}

6.查詢結果高亮顯示

HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.preTags("<h3><em>");
        highlightBuilder.postTags("</em><h3>");
        highlightBuilder.field("name");
        SearchResponse response = srb.setQuery(QueryBuilders.matchQuery("name","張三")).highlighter(highlightBuilder).addSort("age", SortOrder.ASC).execute().actionGet();
        SearchHits hits = response.getHits();

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

執行結果:

{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>222]]}
{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>]]}
{"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>111]]}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>ggg]]}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>ggg]]}

7.組合多條件查詢

場景1:must使用

QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "張三");
        QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山東");
        SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2)).execute().actionGet();
        SearchHits hits = response.getHits();

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

執行結果:

{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}

場景2: must與must_not組合使用

QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "張三");
        QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "青島");
     
        SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).mustNot(b2)).execute().actionGet();
        SearchHits hits = response.getHits();

執行結果:

{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"}
{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"}
{"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}

場景3: should使用

QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "張三");
        QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山東");
        QueryBuilder b3 = QueryBuilders.rangeQuery("age").gte(20);

        SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2).should(b3)).addSort("age",SortOrder.DESC).execute().actionGet();
        SearchHits hits = response.getHits();

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

執行結果:

{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"}
{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"}
{"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}

場景4:filter使用

QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "張三");
        QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山東");
        QueryBuilder b3 = QueryBuilders.rangeQuery("age").gt(20);
     
        SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2).should(b3).filter(b3)).execute().actionGet();
        SearchHits hits = response.getHits();

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

執行結果:

{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}
相關文章
相關標籤/搜索