JAVA使用ElasticSearch查询in和not in的实现方式
程序员文章站
2024-03-01 20:38:16
elasticsearch
elasticsearch是一个基于lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于restful web接口。el...
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的实现方式
-
【我的Java笔记】多线程_使用匿名内部类的方式实现多线程
-
java之线程创建的两种方式,六种状态和匿名内部类创建子类或实现类对象
-
使用递归删除树形结构的所有子节点(java和mysql实现)
-
Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例
-
Eclipse中使用Maven创建Java Web工程的实现方式
-
JAVA数据结构-1.普通队列和循环队列的实现以及JAVA的Queue的使用解析
-
请问关于php中使用ajax实现菜单联动查询的思路和方法
-
java中线程实现方式(execute和submit方式的区别)
-
Java使用IO流实现音频的剪切和拼接