前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 查询in 和 not in 的实现方式

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

作者头像
执笔记忆的空白
发布2020-12-24 09:59:45
4.7K0
发布2020-12-24 09:59:45
举报
文章被收录于专栏:Java日常

最近用到ES查询,因用的是Java写的,需要实现一个需求: 过滤一部分id, 查询时不需要查出来。

既然需要不包含,那么首先需要实现包含的方式(精确完全匹配),这里我们要用到的是termQuery

首先看下ES Bool联合查询的属性:

bool联合查询: must,should,must_not

联合查询就会使用到must,should,must_not三种关键词。

这三个可以这么理解

  • must: 文档必须完全匹配条件
  • should: should下面会带一个以上的条件,至少满足一个条件,这个文档就符合should
  • must_not: 文档必须不匹配条件

具体案例,我需要过滤掉不用的exerciseId:

代码语言:javascript
复制
        BoolQueryBuilder exersiceBoolQuery = QueryBuilders.boolQuery();
        if (exersiceIds != null && exersiceIds.size() > 0)
        {
            for (String exerciseId: exersiceIds)
            {
                exersiceBoolQuery.mustNot(QueryBuilders.termQuery("id", exerciseId));
            }
        }

最后在发送请求的时候,加上你的exersiceBoolQuery 即可

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • bool联合查询: must,should,must_not
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档