java代码实现一个简单ES条件查询
1.导入es依赖 我使用的es是7.13.0的版本
<properties><elasticsearch.version>7.13.0</elasticsearch.version>
</properties>
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>${elasticsearch.version}</version><exclusions><exclusion><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId></exclusion><exclusion><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${elasticsearch.version}</version>
</dependency>
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>${elasticsearch.version}</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions>
</dependency>
<!--springboot-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- fast json-->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId>
</dependency>
2.直接上代码
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;/*** @author likk* @create 2021-11-22 18:31*/
public class SearchTest {public static void main(String[] args) {try {//通过ES提供的 构造器 来建立起和ES之间的远程连接RestClientBuilder restClientBuilder =RestClient.builder(new HttpHost("192.168.22.130",19200,"http"));//创建高层对象准备操作ES创建的连接RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//搜索资源构造器SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();//创建复合查询条件对象BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();//如以下条件:查询名字中有李四的并且年龄必须大于20的BoolQueryBuilder must = boolQueryBuilder.should(QueryBuilders.matchQuery("name", "张三")).must(QueryBuilders.matchQuery("age", 18));//需要条件SearchSourceBuilder query = searchSourceBuilder.query(must);//创建一个SearchRequest,查询的请求对象SearchRequest request = new SearchRequest("aa").source(query);//得到了一个搜索响应对象SearchResponse search = restHighLevelClient.search(request, RequestOptions.DEFAULT);SearchHit[] hits = search.getHits().getHits();for (SearchHit hit : hits) {String str = hit.toString();//转换成JSON格式JSONObject jsonObject = JSONObject.parseObject(str);JSONObject source = jsonObject.getJSONObject("_source");String name = source.getString("name");Integer age = source.getInteger("age");System.out.println("name:"+name+","+"age:"+age);}}catch (Exception e){e.printStackTrace();}}
}
3.输出结果
name:张三,age:18
name:张三,age:18
java代码实现一个简单ES条件查询相关推荐
- java程序 购物车_用java代码写一个简单的网上购物车程序
1 需求:1.写一个商品类,有商品编号.商品名称.商品分类.商品单价属性.2.写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法.2 3 3.写一个购物车类,有添加商品方法.查看订单信息,删 ...
- C++ 容器的综合应用的一个简单实例——文本查询程序
[0. 需求] 最近在粗略学习<C++ Primer 4th>的容器内容,关联容器的章节末尾有个很不错的实例. 通过实现一个简单的文本查询程序,希望能够对C++的容器学习有更深的理解. 由 ...
- 基于 Roslyn 实现一个简单的条件解析引擎
基于 Roslyn 实现一个简单的条件解析引擎 Intro 最近在做一个勋章的服务,我们想定义一些勋章的获取条件,满足条件之后就给用户颁发一个勋章,定义条件的时候会定义需要哪些参数,参数的类型,获取勋 ...
- 用java设计实现一个简单的动作冒险类游戏
用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...
- html做成绩查询,一个简单的成绩查询系统
一个简单的成绩查询系统 作者:未知 文章来源:www.jspcn.net 发布日期:2005年01月19日 作者:Javazealot 先建一个数据库(std.mdb):其中有两个表 1.pw( ...
- java设计游戏_用java设计实现一个简单的动作冒险类游戏
用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...
- java动作游戏教程_用java设计实现一个简单的动作冒险类游戏
用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...
- 用Java写的一个简单的扑克牌魔术
一个用Java写了的简单的扑克牌魔术 一个用Java代码写的简单的扑克牌魔术,就是常见的在心里记一张牌,然后问你两次范围就知道答案,好像原理有点像二进制,小时候大人用这个魔术逗小孩开心,10几年了,原 ...
- 使用Flutter编写一个简单的天气查询App
使用Flutter编写一个简单的天气查询App Flutter项目目录分析 入口函数 home:主页面 编写天气应用 网络请求 数据解析 布局编写 Flutter里基础的Widget 上 中 下 Fl ...
最新文章
- 编写程序实验两个数的加减结果的判断_实验一 两个多字节数的加减运算 -
- NME的GLSL支持情况
- JS发送跨域Post请求出现两次请求的解决办法
- 系统调用syscall---用户态切换到内核态的唯一途径
- orcale 之 集合操作
- Java文件类String [] list(FilenameFilter fnf)方法,带示例
- 牛客网——约数的个数
- html5画安卓机器人,HTML5用户笔画形状检测机器人
- 别再说Python简单!
- Delphi 正则表达式语法(2): 或者与重复
- C++ 类的多态四(虚析构函数的重要性)
- 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。
- Python学习笔记 之 函数进阶
- java安装包_Java6 Update
- 淘宝/天猫优惠券获取API 接口
- PYTHON2.day14
- Nginx安装SSL证书
- 免费备案查询API,支持通过主办单位名称查询备案信息
- 十分感谢--致谢好友的
- 数字拼图java小程序_JS写的数字拼图小游戏代码[学习参考]
热门文章
- 硬件:如何选择固态硬盘
- cocos2d: fullPathForFilename: No file found at resource/Player.png. Possible missing file.
- reactor 模型
- Context.managedQuery()和context.getContentResolver()获取Cursor关闭注意事项
- JDBC的七个步骤:
- java需注意的一些东西
- 论文快速降重的一点实用性见解(仅供参考)
- 场景检测:面片、光影和物理属性
- 深圳-想说爱你不容易(爱一下子与爱一辈子)
- cocos2dx3.x物理引擎的碰撞检测