您的位置:首页 > 编程语言 > Java开发

Elasticsearch 查询in 和 not in 的实现方式

2017-12-22 12:06 423 查看
最近用到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