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
即可
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
SpringBoot整合Elasticsearch7.2.0的实现方法
Spring boot 2.1.X整合Elasticsearch最新版的一处问题 新版本的Spring boot 2的spring-boot-starter-data-elasticsearch中支持的Elasticsearch版本是2.X,但Elasticsearch实际上已经发展到7.2.X版本了,为了更好的使用Elasticsearch的新特性,所以弃用了spring-boot-starter-data-elasticsearch依赖,而改为直接使用Spring-data-elastics
-
利用Java多线程技术导入数据到Elasticsearch的方法步骤
前言 近期接到一个任务,需要改造现有从mysql往Elasticsearch导入数据MTE(mysqlToEs)小工具,由于之前采用单线程导入,千亿数据需要两周左右的时间才能导入完成,导入效率非常低.所以楼主花了3天的时间,利用java线程池框架Executors中的FixedThreadPool线程池重写了MTE导入工具,单台服务器导入效率提高十几倍(合理调整线程数据,效率更高). 关键技术栈 Elasticsearch jdbc ExecutorService\Thread sql 工具说明
-
Elasticsearch实现复合查询高亮结果功能
一.Es的配置 实现es的全文检索功能的第一步,首先从与es进行连接开始,这里我使用的是es的5.x java api语法. public TransportClient esClient() throws UnknownHostException{ Settings settings = Settings.builder() .put("cluster.name", "my-application") //节点的名字 .put("client.trans
-
elasticsearch head的安装及使用过程解析
ealsticsearch只是后端提供各种api,那么怎么直观的使用它呢?elasticsearch-head将是一款专门针对于elasticsearch的客户端工具 elasticsearch-head配置包,下载地址:https://github.com/mobz/elasticsearch-head elasticsearch-head是一个基于node.js的前端工程,启动elasticsearch-head的步骤如下(这里针对的是elasticsearch 5.x以上的版本): 1.进
-
java操作elasticsearch的案例解析
这篇文章主要介绍了java操作elasticsearch的案例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 到目前为止,我们一直都是使用RESTful风格的 API操作elasticsearch服务,但是通过我们之前的学习知道,elasticsearch提供了很多语言的客户端用于操作elasticsearch服务,例如:java.python..net.JavaScript.PHP等.而我们此次就学习如何使用java语言来操作elasti
-
SpringBoot整合Spring Data Elasticsearch的过程详解
Spring Data Elasticsearch提供了ElasticsearchTemplate工具类,实现了POJO与elasticsearch文档之间的映射 elasticsearch本质也是存储数据,它不支持事物,但是它的速度远比数据库快得多, 可以这样来对比elasticsearch和数据库 索引(indices)--------数据库(databases) 类型(type)------------数据表(table) 文档(Document)---------------- 行(ro
-
使用java操作elasticsearch的具体方法
系统环境: vm12 下的centos 7.2 当前安装版本: elasticsearch-2.4.0.tar.gz Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功能 通过client.transport.sniff启动嗅探功能,这样只需要指定集群中的某一个节点(不一定是主节点),然后会加载集群中的其他节点,这样只要程序不停即使此节点宕机仍然可以
-
java 使用ElasticSearch完成百万级数据查询附近的人功能
上一篇文章介绍了ElasticSearch使用Repository和ElasticSearchTemplate完成构建复杂查询条件,简单介绍了ElasticSearch使用地理位置的功能. 这一篇我们来看一下使用ElasticSearch完成大数据量查询附近的人功能,搜索N米范围的内的数据. 准备环境 本机测试使用了ElasticSearch最新版5.5.1,SpringBoot1.5.4,spring-data-ElasticSearch2.1.4. 新建Springboot项目,勾选Elas
-
基于Lucene的Java搜索服务器Elasticsearch安装使用教程
一.安装Elasticsearch Elasticsearch下载地址:http://www.elasticsearch.org/download/ ·下载后直接解压,进入目录下的bin,在cmd下运行elasticsearch.bat 即可启动Elasticsearch ·用浏览器访问: http://localhost:9200/ ,如果出现类似如下结果则说明安装成功: { "name" : "Benedict Kine", "cluster_na
-
JAVA使用ElasticSearch查询in和not in的实现方式
ElasticSearch Elasticsearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便. 最近用到ES查询,因用的是Java写的,需要实现一个需求:过滤一部分id,查询时不需要查出来. 既然需要不包含,那么首先需要实现包含的方式(精确完
-
java使用elasticsearch分组进行聚合查询过程解析
这篇文章主要介绍了java使用elasticsearch分组进行聚合查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java连接elasticsearch 进行聚合查询进行相应操作 一:对单个字段进行分组求和 1.表结构图片: 根据任务id分组,分别统计出每个任务id下有多少个文字标题 1.SQL:select id, count(*) as sum from task group by taskid; java ES连接工具类 p
-
java 通过聚合查询实现elasticsearch的group by后的数量
通过聚合查询获取group by 后的数量 /** * 获取key的个数 * * @param key 要group by的字段名 * @param index 索引名称 * @return id的个数 */ public static int getKeyCount(String key, String index) { int count = 0; TransportClient client = null; try { client = connectionPool.getConnecti
-
java使用es查询的示例代码
众所周知,elasticsearch简称es,它是基于基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便. 我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的.我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全
-
Java使用elasticsearch基础API使用案例讲解
1.依赖 我用的是 springboot 2.2.5.RELEASE 版本,这里只贴出主要依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> 2.配置+测试源码 这里根据elasticsearch服务端的地址进行
-
Java中Elasticsearch 实现分页方式(三种方式)
目录 ES 简介 ES 的特点: 一.from + size 浅分页 二.scroll 深分页 scroll删除 三.search_after 深分页 ES 简介 Elasticsearch 是一个基于 Lucene 实现的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎.Elasticsearch用于云计算中,能够达到实时搜索,稳定
-
java操作elasticsearch详细方法总结
目录 一.前言 二.java操作es的常用模式 三.rest-api 操作 1.前置准备 2.索引相关操作api的使用 2.1 创建索引 2.2 获取索引 2.3 删除索引 3.文档常用操作api的使用 3.1 索引添加文档 3.2 修改文档 3.3 删除文档 3.4 批量添加文档 3.5 批量删除 4.文档搜索相关api的使用 4.1 查询某个索引下的所有数据 4.2 批量查询多条数据 4.3 根据条件精准查询 4.4 分页查询 4.5 查询结果按照某个字段进行排序
-
Elasticsearch查询之Term Query示例解析
目录 Term Query 基本语法 Java代码写法 Terms-匹配多个值 基本语法 Java写法 Term查询可配置的其他参数 总结 Term Query Term Query是一种最基本的查询方式,它用于在Elasticsearch中查询一个字段中包含指定关键词的文档,与MySQL中的等值查询类似.使用Term Query时,可以对字段进行完全匹配,且区分大小写. 基本语法 GET /{index}/_search { "query": { "term":
-
Elasticsearch查询 - Match 查询
目录 Match Query match查询示例 JavaAPI查询示例 match_phrase查询示例 match查询的常用参数 Match查询与Term查询的区别 总结 Match Query Match查询是一种基于全文本的查询方法,可以在一个或多个字段中搜索包含指定文本的文档.它会将查询字符串进行分词处理,然后对每个词进行匹配,从而找到所有匹配的文档. Match查询有两种类型:match_phrase和match.match_phrase用于匹配完整的短语,而match只需匹配单个词
随机推荐
- 基于Angularjs+mybatis实现二级评论系统(仿简书)
- 利用Spring IOC技术实现用户登录验证机制
- JS实现身份证输入框的输入效果
- Repeater中添加按钮实现点击按钮获取某一行数据的方法
- 探讨php中遍历二维数组的几种方法详解
- 清空元素html("") innerHTML="" 与 empty()的区别和应用(推荐)
- PHP判断表达式中括号是否匹配的简单实例
- Android提高之BroadcastReceiver实例详解
- 使用php+Ajax实现唯一校验实现代码[简单应用]
- 一个不错的可以检测多中浏览器的函数和其它功能第1/2页
- mysql动态游标学习(mysql存储过程游标)
- Winserver2012下mysql 5.7解压版(zip)配置安装教程详解
- 减少mysql主从数据同步延迟问题的详解
- PHP new static 和 new self详解
- PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
- javascript属性访问表达式用法分析
- 探索PowerShell(十) 循环语句介绍
- JQuery Dialog的内存泄露问题解决方法
- jquery自定义插件——window的实现【示例代码】
- javaweb中ajax请求后台servlet(实例)