elasticsearch笔记(4) java操作es的查询_04----- prefix查询 fuzzy查询 wildcard查询 range查询 regexp查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了elasticsearch笔记(4) java操作es的查询_04----- prefix查询 fuzzy查询 wildcard查询 range查询 regexp查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6190字,纯文字阅读大概需要9分钟。
内容图文
![elasticsearch笔记(4) java操作es的查询_04----- prefix查询 fuzzy查询 wildcard查询 range查询 regexp查询](/upload/InfoBanner/zyjiaocheng/604/9891a04ff8af4057bf684ed63a854936.jpg)
以下所有匹配的查询因为涉及到匹配, 所以效率低.(regexp查询 wildcard查询 fuzzy查询 prefix查询)
一. prefix前缀查询, 比如某个field是"途虎科技", 搜索词是"途虎";则可以查询出来;
和match的区别, 如果"途虎科技"是"keyword"类型, 是查询不到的.
1.1 kibana中用prefix查询
1.2 java中用prefix查询
1 @Test 2 public void getPrefixTest() throws IOException { 3 // 1. 创建查询对象 4 String index = "sms-logs-index"; 5 String type = "sms-logs-type"; 6 SearchRequest searchRequest = new SearchRequest(index);//指定索引 7 searchRequest.types(type);//指定类型 8 // 2. 封装查询条件 9 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 10 searchSourceBuilder.query(QueryBuilders.prefixQuery("corpName","途虎")); 11 searchRequest.source(searchSourceBuilder); 12 13 // 3.执行查询 14 // client执行 15 HttpHost httpHost = new HttpHost("192.168.43.30", 9200); 16 RestClientBuilder restClientBuilder = RestClient.builder(httpHost); 17 RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder); 18 SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); 19 20 // 4.获取数据(source中的数据) 21 SearchHit[] hits = search.getHits().getHits(); 22 for(SearchHit searchHit : hits){ 23 System.out.println(searchHit); 24 } 25 }
二. fuzzy模糊匹配
当匹配的内容中有途虎两个字不错误, 后面的有错别字, 可以匹配.
2.1 kibana中用fuzzy查询
2.2java中用fuzzy查询
1 @Test 2 public void getFuzzyTest() throws IOException { 3 // 1. 创建查询对象 4 String index = "sms-logs-index"; 5 String type = "sms-logs-type"; 6 SearchRequest searchRequest = new SearchRequest(index);//指定索引 7 searchRequest.types(type);//指定类型 8 // 2. 封装查询条件 9 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 10 searchSourceBuilder.query(QueryBuilders.fuzzyQuery("corpName","途虎养伡").prefixLength(2)); 11 searchRequest.source(searchSourceBuilder); 12 13 // 3.执行查询 14 // client执行 15 HttpHost httpHost = new HttpHost("192.168.43.30", 9200); 16 RestClientBuilder restClientBuilder = RestClient.builder(httpHost); 17 RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder); 18 SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); 19 20 // 4.获取数据(source中的数据) 21 SearchHit[] hits = search.getHits().getHits(); 22 for(SearchHit searchHit : hits){ 23 System.out.println(searchHit); 24 } 25 }
三. wildcard查询(未知查询)通配查询
3.2 在java中使用wildcard查询
@Test public void getWildcardTest() throws IOException { // 1. 创建查询对象 String index = "sms-logs-index"; String type = "sms-logs-type"; SearchRequest searchRequest = new SearchRequest(index);//指定索引 searchRequest.types(type);//指定类型 // 2. 封装查询条件 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.wildcardQuery("corpName","途虎*")); searchRequest.source(searchSourceBuilder); // 3.执行查询 // client执行 HttpHost httpHost = new HttpHost("192.168.43.30", 9200); RestClientBuilder restClientBuilder = RestClient.builder(httpHost); RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder); SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); // 4.获取数据(source中的数据) SearchHit[] hits = search.getHits().getHits(); for(SearchHit searchHit : hits){ System.out.println(searchHit); } }
四. range查询
在某个范围内的查询:
4.1 查询fee字段的范围是0-10的
4.2 java中用range查询
@Test public void getrangesTest() throws IOException { // 1. 创建查询对象 String index = "sms-logs-index"; String type = "sms-logs-type"; SearchRequest searchRequest = new SearchRequest(index);//指定索引 searchRequest.types(type);//指定类型 // 2. 封装查询条件 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.rangeQuery("fee").gte(0).lte(10)); searchRequest.source(searchSourceBuilder); // 3.执行查询 // client执行 HttpHost httpHost = new HttpHost("192.168.43.30", 9200); RestClientBuilder restClientBuilder = RestClient.builder(httpHost); RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder); SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); // 4.获取数据(source中的数据) SearchHit[] hits = search.getHits().getHits(); for(SearchHit searchHit : hits){ System.out.println(searchHit); } }
五 regexp查询: 正则查询,
5.1 regexp在在kibana
5.2 regexp在java中
1 @Test 2 public void regexTest() throws IOException { 3 // 1. 创建查询对象 4 String index = "sms-logs-index"; 5 String type = "sms-logs-type"; 6 SearchRequest searchRequest = new SearchRequest(index);//指定索引 7 searchRequest.types(type);//指定类型 8 // 2. 封装查询条件 9 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 10 searchSourceBuilder.query(QueryBuilders.regexpQuery("mobile","159[0-9]{7}")); 11 searchRequest.source(searchSourceBuilder); 12 13 // 3.执行查询 14 // client执行 15 HttpHost httpHost = new HttpHost("192.168.43.30", 9200); 16 RestClientBuilder restClientBuilder = RestClient.builder(httpHost); 17 RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder); 18 SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); 19 20 // 4.获取数据(source中的数据) 21 SearchHit[] hits = search.getHits().getHits(); 22 for(SearchHit searchHit : hits){ 23 System.out.println(searchHit); 24 } 25 }
------------恢复内容结束------------
内容总结
以上是互联网集市为您收集整理的elasticsearch笔记(4) java操作es的查询_04----- prefix查询 fuzzy查询 wildcard查询 range查询 regexp查询全部内容,希望文章能够帮你解决elasticsearch笔记(4) java操作es的查询_04----- prefix查询 fuzzy查询 wildcard查询 range查询 regexp查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。