封装查询条件的常用api
1
QueryBuilders.matchQuery("name", searchMap.get("keywords")).operator(Operator.AND)
//对查询内容进行分词 后查询
//查询域对象为name, 查询内容为searchMap.get("keywords") operator不写的时候默认为or,结果数据取并集 此时设置为and,结果取交集
2
QueryBuilders.termQuery("brandName", searchMap.get("brand"))
//对查询内容进行词条查询,不拆分
QueryBuilders.rangeQuery("price").lte(2000)
//范围查询设置上限
QueryBuilders.rangeQuery("price").gte(3000)
//范围查询设置下限
4
QueryBuilders.wildcardQuery("title","花*");
//模糊查询条件封装
5
QueryBuilders.regexQuery("title","\\w+");
//正则条件查询
6
QueryBuilders.prefixQuery("brandName","小");
//前缀查询条件封装
7
QueryBuilders.queryStringQuery("华为手机").field("name")
.field("title").defaultOperator(Operator.OR);
//在多字段中进行查询 operator查询结果是并集
8
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();//创建一个布尔查询容器
//封装查询条件
boolQuery.must(QueryBuilders.matchQuery("name", searchMap.get("keywords")).operator(Operator.AND));
boolQuery.filter(QueryBuilders.termQuery("brandName", searchMap.get("brand")));
//在布尔查询 多条件查询 布尔查询相当于是一个容器,将上面的一些查询条件一个一个分装到布尔查询的容器中
9
SearchSourceBuilder sourceBuilder=new SearchSourceBuilder();
QueryBuilder query=QueryBuilders.matchQuery("title","手机");
AggregationBuilder agg = AggregationBuilders.terms("goods_brands").field("brandName");
sourceBuilder.aggregation(agg);
/**
* 聚合查询:桶聚合,分组查询
* 1. 查询title包含手机的数据
* 2. 查询品牌列表
*/