ES练习---各种查询方式

 

 

二、ES的各种查询

2.1term&terms查询

2.1.1term查询(我试了下province没有办法查询,需到后面加个.keyword)

ES练习---各种查询方式

 

 

 

package com.qf.test;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.qf.utils.ESClient;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.junit.Test;

import java.io.IOException;
import java.util.Map;

public class Demo4 {
    ObjectMapper mapper=new ObjectMapper();
    RestHighLevelClient client = ESClient.getClient();

    String index="sms-logs-index";
    String type="sms-logs-type";
    @Test
    public void termQuery() throws IOException {
        //1.创建request对象
        SearchRequest searchRequest=new SearchRequest(index);
        searchRequest.types(type);
        //2.指定查询条件
        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.from(0);
        builder.size(5);
        builder.query(QueryBuilders.termQuery("province.keyword","北京"));
        searchRequest.source(builder);
        //执行查询
        SearchResponse rsp=client.search(searchRequest, RequestOptions.DEFAULT);
        //输出结果
        for (SearchHit hit:rsp.getHits().getHits()) {
            Map<String,Object> result=hit.getSourceAsMap();
            System.out.println(result);
            
        }
            
        }
   }

  

2.1.2terms查询

ES练习---各种查询方式

 

 

POST /sms-logs-index/sms-logs-type/_search
{
  "from": 0,
  "size": 5,
  "query":{
  "terms":{
    "province.keyword":[
      "江苏",
      "北京",
      "南通"
    ]
    
   }
  } 
}

  

    @Test
    public void termsQuerry() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);
        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.termsQuery("province.keyword","南通","江苏"));
        request.source(builder);;
        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
        //输出结果
        for (SearchHit hit:rsp.getHits().getHits()) {
            Map<String,Object> result=hit.getSourceAsMap();
            System.out.println(result);
    }
   }}

  

 

2.2match_all&match查询

2.2.1match_all

ES练习---各种查询方式

 

 

 

POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "match_all": {}
  }
  }

  注:ES默认查询10条数据

 @Test
    public void  matchAllQuery() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);
        
        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.matchAllQuery());
        builder.size(20);//ES默认查询10条数据
            request.source(builder);

        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
         for (SearchHit hit: rsp.getHits().getHits()) {
             System.out.println(hit.getSourceAsMap());


        }
    }

  

2.2.2match查询

ES练习---各种查询方式

 

POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "match": {
      "smsContent": "恭喜"
    }
  }
}
  @Test
    public void  matchQuery() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);

        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.matchQuery("smsContent","恭喜"));
        builder.size(20);//ES默认查询10条数据
        request.source(builder);

        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
        for (SearchHit hit: rsp.getHits().getHits()) {
            System.out.println(hit.getSourceAsMap());


        }
    }

  2.2.3布尔match查询

ES练习---各种查询方式

 

 ES练习---各种查询方式

 

 

    public void  booleanMatchQuery() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);

        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.matchQuery("smsContent","恭喜 高级").operator(Operator.AND));
        builder.size(20);//ES默认查询10条数据
        request.source(builder);

        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
        for (SearchHit hit: rsp.getHits().getHits()) {
            System.out.println(hit.getSourceAsMap());


        }
    }

  2.2.4mulitMatch查询

ES练习---各种查询方式

 

 

 @Test
    public void  mulitMatchQuery() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);

        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.multiMatchQuery("北京","province","smsContent"));
        builder.size(20);//ES默认查询10条数据
        request.source(builder);

        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
        for (SearchHit hit: rsp.getHits().getHits()) {
            System.out.println(hit.getSourceAsMap());


        }
    }

  

2.3id&ids查询

2.3.1id查询

ES练习---各种查询方式

 

 

ES练习---各种查询方式

 

 @Test
    public  void findByid() throws IOException {
        GetRequest request=new GetRequest(index,type,"1");
        GetResponse rsp=client.get(request, RequestOptions.DEFAULT);
        System.out.println(rsp.getSourceAsMap());

    }

 

 

2.3.2ids查询

ES练习---各种查询方式

 

    @Test
    public void findByids() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);

        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.idsQuery().addIds("1","2","3"));
        request.source(builder);
        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
        for (SearchHit hit: rsp.getHits().getHits()) {
            System.out.println(hit.getSourceAsMap());
        }
    }

 

2.4prefix查询

ES练习---各种查询方式

 

 

 @Test
    public void findByPrefix() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);

        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.prefixQuery("corpName","恭喜"));
        request.source(builder);
        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
        for (SearchHit hit: rsp.getHits().getHits()) {
            System.out.println(hit.getSourceAsMap());
        }
    }

2.5fuzzy查询

 ES练习---各种查询方式

 

 

  @Test
    public void findByfuzzy() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);

        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.fuzzyQuery("corpName","恭喜您").prefixLength(2));
        request.source(builder);
        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
        for (SearchHit hit: rsp.getHits().getHits()) {
            System.out.println(hit.getSourceAsMap());
        }
    }

2.6wildcard查询

ES练习---各种查询方式

 

 @Test
    public void findByWildcard() throws IOException {
        SearchRequest request=new SearchRequest(index);
        request.types(type);

        SearchSourceBuilder builder=new SearchSourceBuilder();
        builder.query(QueryBuilders.wildcardQuery("corpName","恭喜*"));
        request.source(builder);
        SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
        for (SearchHit hit: rsp.getHits().getHits()) {
            System.out.println(hit.getSourceAsMap());
        }
    }
View Code

相关文章:

  • 2021-11-15
  • 2021-10-27
  • 2022-02-10
  • 2022-12-23
  • 2022-12-23
  • 2021-08-01
  • 2021-11-24
  • 2021-06-12
猜你喜欢
  • 2021-11-06
  • 2021-12-21
  • 2021-10-12
  • 2021-09-05
  • 2022-12-23
  • 2019-08-12
相关资源
相似解决方案