es java match_java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)...
1、条件match query查询
//条件查询match query
@Testpublic void test10() throwsUnknownHostException {//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();//2.创建访问ES服务器的客户端
TransportClient client = newPreBuiltTransportClient(settings)//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
QueryBuilder builder= QueryBuilders.matchQuery("interests", "changge");
SearchResponse response= client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits=response.getHits();for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());//将获取的值转换成map的形式
Map map =hit.getSourceAsMap();for(String key:map.keySet()) {
System.out.println(key+" key对应的值为:" +map.get(key));
}
}
}
2、multimatch query查询
说明:查询的值在多个字段中进行匹配查询
//multiMatchQuery 查询的值在多个字段中进行匹配
@Testpublic void test11() throwsUnknownHostException {//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();//2.创建访问ES服务器的客户端
TransportClient client = newPreBuiltTransportClient(settings)//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));//第一个参数是查询的值,后面的参数是字段名,可以跟多个字段,用逗号隔开
QueryBuilder builder = QueryBuilders.multiMatchQuery("changge", "address","interests");
SearchResponse response= client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits=response.getHits();for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());//将获取的值转换成map的形式
Map map =hit.getSourceAsMap();for(String key:map.keySet()) {
System.out.println(key+" key对应的值为:" +map.get(key));
}
}
}
3、term查询
说明:term查询是不支持分词查询的
//term查询
@Testpublic void test12() throwsUnknownHostException {//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();//2.创建访问ES服务器的客户端
TransportClient client = newPreBuiltTransportClient(settings)//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));//term查询是不进行分词的
QueryBuilder builder = QueryBuilders.termQuery("interests", "changge");
SearchResponse response= client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits=response.getHits();for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());//将获取的值转换成map的形式
Map map =hit.getSourceAsMap();for(String key:map.keySet()) {
System.out.println(key+" key对应的值为:" +map.get(key));
}
}
}
4、terms查询
说明:与term的区别在于terms可以同时匹配多个条件
//terms查询:与term区别在于可以在同个字段中同时匹配多个条件,但是不支持分词
public void test13() throwsUnknownHostException {//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();//2.创建访问ES服务器的客户端
TransportClient client = newPreBuiltTransportClient(settings)//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));//terms查询是不进行分词的 与term的区别在terms可以指定一个字段匹配多个查询内容
QueryBuilder builder = QueryBuilders.termsQuery("interests", "changge","旅游");
SearchResponse response= client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits=response.getHits();for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());//将获取的值转换成map的形式
Map map =hit.getSourceAsMap();for(String key:map.keySet()) {
System.out.println(key+" key对应的值为:" +map.get(key));
}
}
}
5、reange 范围查询
//reange 范围查询(日期在多少之间等)
@Testpublic void test14() throwsUnknownHostException {//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();//2.创建访问ES服务器的客户端
TransportClient client = newPreBuiltTransportClient(settings)//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));//rangeQurey 第一个参数为字段名,后面是范围 在设置日期格式
QueryBuilder builder = QueryBuilders.rangeQuery("birthday").from("1990-01-01").to("2000-10-10").format("yyyy-MM-dd");
SearchResponse response= client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits=response.getHits();for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());//将获取的值转换成map的形式
Map map =hit.getSourceAsMap();for(String key:map.keySet()) {
System.out.println(key+" key对应的值为:" +map.get(key));
}
}
}
下一篇博客本人将书写java操作elasticsearch实现前缀查询、wildcard模糊查询、fuzzy模糊查询、ids查询。对后期博客感兴趣的朋友可以关注交流,转发请说明出处,本人的博客地址为:https://www.cnblogs.com/chenyuanbo/
技术在于交流!
es java match_java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)...相关推荐
- java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
1.前缀查询(prefix) //prefix前缀查询 @Testpublic void test15() throws UnknownHostException {//1.指定es集群 cluste ...
- wildcard java_java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
1.前缀查询(prefix) //prefix前缀查询 @Testpublic void test15() throwsUnknownHostException {//1.指定es集群 cluster ...
- 【ES笔记02】ElasticSearch数据库之查询操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)
这篇文章,主要介绍ElasticSearch数据库之查询操作(match.must.must_not.should._source.filter.range.exists.ids.term.terms ...
- Elasticsearch Java API 的使用—多条件查询
//多条件设置 MatchPhraseQueryBuilder mpq1 = QueryBuilders.matchPhraseQuery("pointid","W3.U ...
- Java使用Criteria实现多条件查询
需求: 前端传入多个查询条件,根据查询条件.查询字段和值使用Java对MongoDB进行多条件筛选. 实现方法: 查询条件传入List<JSONObject>,格式如下: [{" ...
- es java api 进行聚合+桶聚合查询
假设1个member有多个参加的meeting(会议),每个meeting可多次参加,每次参加对应一条参加时间和备注记录 需求: 获取某个member的所有meeting的最新一条记录 查询语句 {& ...
- 【Elasticsearch教程3】查询文档 term terms terms_set
版本约定 本系列博客ES版本如下: Elasticsearch 7.17.X Spring Data Elasticsearch 4.4.X Elasticsearch下载地址 Spring Data ...
- java对es做聚合查询_java操作elasticsearch实现聚合查询
1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...
- 使用Java客户端操作elasticsearch
常见的配置 前面已介绍过,RestClientBuilder支持同时提供一个RequestConfigCallback和一个HttpClientConfigCallback,你可以定制 the Apa ...
最新文章
- http路径转file会变成反斜杠_PHP session反序列化漏洞
- 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
- 幻想和欲望毁了多少苦命的人(修改增加版)
- 将Linux系统下交叉编译的依赖库推到ARM平台下无法建立以来关系解决
- mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
- 计算机 学校教一半 自学一半,一半初中生无缘普高,上职业学校怎么样?
- 【风电功率预测】基于matlab粒子群算法优化BP神经网络风电功率预测【含Matlab源码 347期】
- XP 多国语言包 .
- 如何用思维导图快速理解PMBOK-PMP第六版教材
- JSPstudy恢复80端口
- 【自然语言处理】论述自然语言处理的技术范畴
- MyEclipse 10 破解
- 7-12 输出大写英文字母 (15 分)
- 4g网络设置dns地址_网速变慢?你可能需要先设置好 DNS | 科普
- Java Z 字形变换
- 【C语言关键字】sizeof -- 被误解为函数的关键字
- java 案例:二月天;求月一共有多少天
- 5种盒子垂直居中的方式
- 什么是LRU(最近最少使用)算法?
- 人体一机竞技格斗机器人_电竞火了 机器人格斗会是下一个风口吗?
热门文章
- conda 删除env_软件包与环境管理神器之conda
- 必须了解的Web安全知识(第一部分:HTTPS,TLS,SSL,CORS,CSP)
- c语言warning scanf,【C】将m~n之间的素数输出与VS2005以上版本对C语言的scanf的警告warning C4996...
- Flash和margue字幕滚动效果
- android在github上调用aar文件
- 模型描述的关系模式_框架篇:见识一下linux高性能网络IO+Reactor模型
- 2015春计算机应用技术基础,计算机应用技术基础.doc
- python循环绘制六角星_《Python游戏趣味编程》 第3章 美丽的圆圈画
- 综合实例_为啥要做“三维管线综合”?看个实例就明白
- RHEL 8 - 用podman compose替代docker compose运行Ansible Tower