es java 模糊查询_java使用elasticsearch进行模糊查询
java使用elasticsearch进行模糊查询
使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路,具体实现大家可以看后面文章,若其中有不适,请大家多多包涵
一、ES模糊查询
(一)不含中文模糊查询,适用于数字
SearchResponse searchResponse=null;//连接elasticsearch
TransportClient transportClient =ESClientConnectionUtil.getESClientConnection();
searchResponse=client.prepareSearch()
.setIndices("knowledge")
.setTypes("knowledge_theme")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setScroll(TimeValue.timeValueMinutes(30)) //游标维持时间
.setSize(2 * 5)//实际返回的数量为10*index的主分片数
.setQuery(QueryBuilders.wildcardQuery("name", ("*"+name+"*").toLowerCase())) //查询的字段名及值
.execute()
.actionGet();
(二)ES中文条件查询:
//knowledge代表的是索引名称(相当于数据库名称),knowledge_theme代表的是类型(相当于数据库中的表名)
SearchRequestBuilder requestBuilder = client.prepareSearch("knowledge").setTypes("knowledge_theme");//声明where条件
BoolQueryBuilder qbs =QueryBuilders.boolQuery();/**此处使用模糊匹配查询 类比数据库中 like name代表的是字段名,‘动态’代表的是匹配的关键字*/
//QueryBuilder 适用于单个字段查询(matchPhraseQuery是没有用分词起,matchQuery会使用分词器,将我们输入的值进行分割,如:“java动态”会分割成:“java”,“动态”)
QueryBuilder qb1 = QueryBuilders.matchPhraseQuery("name", "动态");
BoolQueryBuilder bqb1=QueryBuilders.boolQuery().must(qb1);
qbs.must(bqb1);
requestBuilder.setQuery(qbs);///**
查询前10条数据 (此处是为了简单实现功能,才使用From,Size 进行分页查询,若数据量小可以使用,当数据量大时建议大家使用scroll方式进行分页,数据量大时From Size效率会越来越低,而scroll的效率是From Size的几倍)
*/SearchResponse responses= requestBuilder.setFrom(0).setSize(10).execute().actionGet();
(三)模糊查询 ?匹配单个字符,*匹配多个字符
//搜索名字中含有jack文档(name中只要包含jack即可)
WildcardQueryBuilder queryBuilder =QueryBuilders.wildcardQuery("name","*jack*");//搜索名字中含有_jack**的文档;如: wjacksss; ajackwww
WildcardQueryBuilder queryBuilder =QueryBuilders.wildcardQuery("name","?jack*");
(四)复合模糊查询must(相当于SQL中的and)
//模糊查询
WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery("name", "*jack*");//搜索名字中含有jack的文档
WildcardQueryBuilder queryBuilder2 = QueryBuilders.wildcardQuery("interest", "*read*");//搜索interest中含有read的文档
BoolQueryBuilder boolQueryBuilder =QueryBuilders.boolQuery();//name中必须含有jack,interest中必须含有read,相当于and
boolQueryBuilder.must(queryBuilder1);
boolQueryBuilder.must(queryBuilder2);
(五)模糊查询 should(相当于SQL中的or关键字)
WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery("name", "*jack*");//搜索名字中含有jack的文档
WildcardQueryBuilder queryBuilder2 = QueryBuilders.wildcardQuery("interest", "*read*");//搜索interest中含有read的文档
BoolQueryBuilder boolQueryBuilder =QueryBuilders.boolQuery();//name中含有jack或者interest含有read,相当于or
boolQueryBuilder.should(queryBuilder1);
boolQueryBuilder.should(queryBuilder2);
二、多个字段匹配一个值
//搜索name字段或interest字段中包含有cyb的数据,并且这两个字段中的值必须等于cyb
QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery("cyb","name", "interest");
具体每种查询在java代码中的实现大家可以关注下一篇博客
这篇博文我参照的是:https://blog.csdn.net/lom9357bye/article/details/52852533 ;该博主也写了许多总结方法;
原文:https://www.cnblogs.com/chenyuanbo/p/9973105.html
es java 模糊查询_java使用elasticsearch进行模糊查询相关推荐
- es java 模糊查询_java使用elasticsearch进行模糊查询-已在项目中实际应用
java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...
- java对es做聚合查询_java操作elasticsearch实现聚合查询
1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...
- java web数据库查询_Java Web开发之信息查询方式总结
本文实例讲述了Java Web开发之信息查询方式总结.分享给大家供大家参考.具体如下: 这里介绍的查询方式有: ① 根据某个特定的字段查询: ② 在多个字段中查询: ③ 根据任意字段查询: ④ 任意字 ...
- java 拼音模糊查询_java实现首字母模糊查询的功能
①,要实现首字母模糊匹配,首先我们需要得到你要搜索内容的首字母,对于java来说,有一个非常实用的包:pinyin4j.jar. 这个拼音包中的PinyinHelper 方法可以得到String的首字 ...
- java 图像锐化_Java实现图像的模糊与锐化实例
时间:2018-09-28 概述:图片模糊 锐化 Java 图像处理的一个例子,实现图片的模糊和锐化,在PhotoShop中,这是一个很常用的滤镜效果,用Java同样也可实现这些强大的功能,图像锐化效 ...
- java数据查询_Java中的大量数据查询
问题描述:在通常的三层构架下,客户通过Browser请求Web服务器查询数据库,而查询结果是上千条甚至是上百万条记录,要求查询 问题描述:在通常的三层构架下,客户通过Browser请求Web服务器查询 ...
- java二级下拉列表_java map实现二级联动查询(省市区下拉列表查询)
1.Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省市级联选择框,当选择省份信息 ...
- java域名查询_Java技巧: 根据网址/域名查询DNS/IP地址
需求: 给定一个URL地址, 例如: http://www.cncounter.com/tools/shorturl.php, 解析对应的IP地址和端口号. 说明: 本文不涉及底层的 DNS 协议, ...
- Elasticsearch实战——地理位置查询
Elasticsearch实战--地理位置查询 文章目录 Elasticsearch实战--地理位置查询 1. 半径查询(geo_distance query) 2. 指定矩形内的查询(geo_bou ...
- Elasticsearch索引和查询性能调优的21条建议【下】
Elasticsearch是一款流行的分布式开源搜索和数据分析引擎,具备高性能.易扩展.容错性强等特点.它强化了Apache Lucene的搜索能力,把掌控海量数据索引和查询的方式提升到一个新的层次. ...
最新文章
- iOS应用开发入门(2)——添加一个按钮
- 常见的8个前端防御性编程方案
- vue项目创建,redis列表字典操作,django用redis的第二种方法
- c语言与64位windows不兼容_微软发布可模拟 64 位 x86 程序的 ARM 版 Windows 10
- 简述导线平差计算的五个步骤_RTK技术导线测量和全站仪导线测量有什么区别?...
- c语言一年日历程序,c语言日历程序
- 开机动画适配方案_小米CC开机动画首曝光:7月2日在北京水立方发布
- leetcode371
- Android----View
- mysql数据库面试题学生表_SQL笔试题:下面是学生表(student)的结构说明
- IBM SPSS Statistics定义变量使用介绍
- 产品读书《认知盈余》
- 线性代数的本质(Essense of Linear Algebra)——3Blue1Brown
- 点云最小二乘法拟合空间直线
- 计算机2进制、4进制、8进制、10进制、16进制、32进制计算规则
- linux irq 接口,中断机制 – Linux内核API irq_set_chip_data
- 疫情信息管理系统(附源代码及数据库)
- MFC中简单图形的平移与简单旋转
- 动态IP与静态IP的区别
- 【PowerDesigner】Powerbuilder 11.5破解方法