ES构建queryBuilder条件查询

本文介绍了如何使用Elasticsearch的Java API构建查询条件,包括bool查询的must、should、must_not和filter四种逻辑关系。通过QueryBuilders创建match、multi_match、term和range查询,并展示了对应的DSL语句。构建查询语句的关键在于理解SearchRequest的source方法和QueryBuilders类。
摘要由CSDN通过智能技术生成

对于不熟练的同学来说在构建Java代码查询之前一定要先将DSL查询语句,这样方便构造。

首先说一下bool查询的几种逻辑关系(子查询的组合方式):

must:必须匹配每个子查询,与Java的“与”相似

should:选择性的匹配子查询,与Java的“或”相似

must_not:必须不匹配,(不参与算分)与Java的“非”相似

filter:必须匹配,(不参与算分)用来匹配自主的过滤条件

查询的基本步骤是:

1、创建SearchRequest对象

2、准备Request.source(),也就是DSL:①QueryBuilders来构建查询条件②传入Request.source()的query()方法

3、发送请求,得到结果

4、解析结果(参考DSL查询的JSON结果,从外到内,逐层解析)

全文检索的match和multi_match查询与match_all的API基本一直。差别是查询条件,也就是query的部分。同样是利用QueryBuilders提供的方法:

QueryBuilders.matchQuery("all","如家");

QueryBuilders.multiMatchQuery("如家","name","business");

相对应的DSL语句:

GET /hotel/_search

{

        "query": {

                "match_all":{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值