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)...相关推荐

  1. java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询

    1.前缀查询(prefix) //prefix前缀查询 @Testpublic void test15() throws UnknownHostException {//1.指定es集群 cluste ...

  2. wildcard java_java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询

    1.前缀查询(prefix) //prefix前缀查询 @Testpublic void test15() throwsUnknownHostException {//1.指定es集群 cluster ...

  3. 【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 ...

  4. Elasticsearch Java API 的使用—多条件查询

    //多条件设置 MatchPhraseQueryBuilder mpq1 = QueryBuilders.matchPhraseQuery("pointid","W3.U ...

  5. Java使用Criteria实现多条件查询

    需求: 前端传入多个查询条件,根据查询条件.查询字段和值使用Java对MongoDB进行多条件筛选. 实现方法: 查询条件传入List<JSONObject>,格式如下: [{" ...

  6. es java api 进行聚合+桶聚合查询

    假设1个member有多个参加的meeting(会议),每个meeting可多次参加,每次参加对应一条参加时间和备注记录 需求: 获取某个member的所有meeting的最新一条记录 查询语句 {& ...

  7. 【Elasticsearch教程3】查询文档 term terms terms_set

    版本约定 本系列博客ES版本如下: Elasticsearch 7.17.X Spring Data Elasticsearch 4.4.X Elasticsearch下载地址 Spring Data ...

  8. java对es做聚合查询_java操作elasticsearch实现聚合查询

    1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...

  9. 使用Java客户端操作elasticsearch

    常见的配置 前面已介绍过,RestClientBuilder支持同时提供一个RequestConfigCallback和一个HttpClientConfigCallback,你可以定制 the Apa ...

最新文章

  1. http路径转file会变成反斜杠_PHP session反序列化漏洞
  2. 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
  3. 幻想和欲望毁了多少苦命的人(修改增加版)
  4. 将Linux系统下交叉编译的依赖库推到ARM平台下无法建立以来关系解决
  5. mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
  6. 计算机 学校教一半 自学一半,一半初中生无缘普高,上职业学校怎么样?
  7. 【风电功率预测】基于matlab粒子群算法优化BP神经网络风电功率预测【含Matlab源码 347期】
  8. XP 多国语言包 .
  9. 如何用思维导图快速理解PMBOK-PMP第六版教材
  10. JSPstudy恢复80端口
  11. 【自然语言处理】论述自然语言处理的技术范畴
  12. MyEclipse 10 破解
  13. 7-12 输出大写英文字母 (15 分)
  14. 4g网络设置dns地址_网速变慢?你可能需要先设置好 DNS | 科普
  15. Java Z 字形变换
  16. 【C语言关键字】sizeof -- 被误解为函数的关键字
  17. java 案例:二月天;求月一共有多少天
  18. 5种盒子垂直居中的方式
  19. 什么是LRU(最近最少使用)算法?
  20. 人体一机竞技格斗机器人_电竞火了 机器人格斗会是下一个风口吗?

热门文章

  1. conda 删除env_软件包与环境管理神器之conda
  2. 必须了解的Web安全知识(第一部分:HTTPS,TLS,SSL,CORS,CSP)
  3. c语言warning scanf,【C】将m~n之间的素数输出与VS2005以上版本对C语言的scanf的警告warning C4996...
  4. Flash和margue字幕滚动效果
  5. android在github上调用aar文件
  6. 模型描述的关系模式_框架篇:见识一下linux高性能网络IO+Reactor模型
  7. 2015春计算机应用技术基础,计算机应用技术基础.doc
  8. python循环绘制六角星_《Python游戏趣味编程》 第3章 美丽的圆圈画
  9. 综合实例_为啥要做“三维管线综合”?看个实例就明白
  10. RHEL 8 - 用podman compose替代docker compose运行Ansible Tower