ElasticSearch Bool的使用

bool对象的创建有以下两种:

//new 一个查询对象  
BoolQueryBuilder boolQueryBuilder1 = QueryBuilders.boolQuery();
//也可以
BoolQueryBuilder boolQueryBuilder = boolQuery();

方法主要有:

1.must
文档 必须 匹配这些条件才能被包含进来。相当于sql中的 and

2.must_not
文档 必须不 匹配这些条件才能被包含进来。相当于sql中的 not

3.should
如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。相当于sql中的or

4.filter
必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。

构造查询条件

  1. termQuery:精确查询(不分词)
    使用termQuery要注意的是,Elasticsearch5之后,取消了string类型,将原来的string类型拆分为text和keyword两种类型,他们的区别在于text会对字段进行分词处理,而keyword则不会。

  2. matchQuery:匹配查询(分词)
    match query搜索的时候,首先会解析查询字符串,进行分词,然后查询,所以假如我搜索的条件输入的是"六年级",则会把各个年级(一年级至九年级)的数据都查询出来,因为其中都包含’年级’ 。

  3. queryString:精确查询

  4. wildcardQuery:模糊查询

  5. rangeQuery:范围查询

// 实例代码
boolQueryBuilder.must().add(QueryBuilders.wildcardQuery("user_id.keyword",orgCode));
// 范围查询 gte:大于等于 gt:大于 lte:小于等于 lt:小于 
boolQueryBuilder.filter(QueryBuilders.rangeQuery("itemPrice").from(4500).to(8899));

参考博客地址:https://blog.csdn.net/iampatrick_star/article/details/126888901

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值