JAVA使用ElasticSearch查询in和not in的实现方式
ElasticSearch
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
最近用到ES查询,因用的是Java写的,需要实现一个需求:过滤一部分id,查询时不需要查出来。
既然需要不包含,那么首先需要实现包含的方式(精确完全匹配),这里我们要用到的是termQuery
首先看下ES Bool联合查询的属性:
bool联合查询: must,should,must_not
联合查询就会使用到must,should,must_not三种关键词。
这三个可以这么理解
- must: 文档必须完全匹配条件
- should: should下面会带一个以上的条件,至少满足一个条件,这个文档就符合should
- must_not: 文档必须不匹配条件
具体案例,我需要过滤掉不用的exerciseId:
BoolQueryBuilder exersiceBoolQuery = QueryBuilders.boolQuery();
if (exersiceIds != null && exersiceIds.size() > 0)
{
for (String exerciseId: exersiceIds)
{
exersiceBoolQuery.mustNot(QueryBuilders.termQuery("id", exerciseId));
}
}
最后在发送请求的时候,加上你的exersiceBoolQuery即可
总结
以上是 JAVA使用ElasticSearch查询in和not in的实现方式 的全部内容, 来源链接: utcz.com/z/312887.html