模糊查询



BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();

//Elasticsearch 中文会把汉字分词,“王大”会匹配到like“王”和like“大”,要在字段后面接keyword
boolBuilder.must(QueryBuilders.wildcardQuery("userName.keyword","*王大*"));

等于、不等于



BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
//等于  must
boolBuilder.must(QueryBuilders.termQuery("age","30"));
//不等于  mustNot
boolBuilder.mustNot(QueryBuilders.termQuery("sex","1"));

大于、小于



BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
//大于
boolBuilder.must(QueryBuilders.rangeQuery("createTime").gt(1609430400000));
//小于
boolBuilder.must(QueryBuilders.rangeQuery("createTime").lt(1672502400000));

 and 、or 同时使用 

 想实现下面这个sql

select * from user where a=1 and ((b=2 and c=3 and d !=4) or (e=4 and f=5))

 java Elasticsearch 实现


BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();

boolBuilder.must(QueryBuilders.termQuery("a",1));


QueryBuilder queryBuilder1 = QueryBuilders.boolQuery()
                    .must(QueryBuilders.termQuery("b", 2))
                    .must(QueryBuilders.termQuery("c", 3))
                    .mustNot(QueryBuilders.termQuery("d", 4));

QueryBuilder queryBuilder2 = QueryBuilders.boolQuery()
                    .must(QueryBuilders.termQuery("e", 4))
                    .must(QueryBuilders.termQuery("f", 5));

QueryBuilder queryBuilder = QueryBuilders.boolQuery()
                    .should(queryBuilder1)
                    .should(queryBuilder2);

boolBuilder.must(queryBuilder);

where in条件



BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();

boolBuilder.filter(QueryBuilders.termsQuery("type",[1,2,3]));

排序


SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
//where 条件
searchSourceBuilder.query(boolBuilder);

//排序  SortOrder.ASC   SortOrder.DESC
searchSourceBuilder.sort("createTime", SortOrder.ASC);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐