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"}
相关文章
相关标签/搜索