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 ;该博主也写了许多总结方法;

es java 模糊查询_java使用elasticsearch进行模糊查询-已在项目中实际应用相关推荐

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

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

  2. java web数据库查询_Java Web开发之信息查询方式总结

    本文实例讲述了Java Web开发之信息查询方式总结.分享给大家供大家参考.具体如下: 这里介绍的查询方式有: ① 根据某个特定的字段查询: ② 在多个字段中查询: ③ 根据任意字段查询: ④ 任意字 ...

  3. java design按钮_DesignJava 设计模式,讲述 的各种 方便在项目中进行 框架结构 Develop 238万源代码下载- www.pudn.com...

    文件名称: DesignJava下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 1675 KB 上传时间: 2013-11-21 下载次数: 2 提 供 者: 1 ...

  4. java 拼音模糊查询_java实现首字母模糊查询的功能

    ①,要实现首字母模糊匹配,首先我们需要得到你要搜索内容的首字母,对于java来说,有一个非常实用的包:pinyin4j.jar. 这个拼音包中的PinyinHelper 方法可以得到String的首字 ...

  5. java 图像锐化_Java实现图像的模糊与锐化实例

    时间:2018-09-28 概述:图片模糊 锐化 Java 图像处理的一个例子,实现图片的模糊和锐化,在PhotoShop中,这是一个很常用的滤镜效果,用Java同样也可实现这些强大的功能,图像锐化效 ...

  6. java二级下拉列表_java map实现二级联动查询(省市区下拉列表查询)

    1.Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省市级联选择框,当选择省份信息 ...

  7. java域名查询_Java技巧: 根据网址/域名查询DNS/IP地址

    需求: 给定一个URL地址, 例如: http://www.cncounter.com/tools/shorturl.php, 解析对应的IP地址和端口号. 说明: 本文不涉及底层的 DNS 协议, ...

  8. java存入光盘_java 这是 学习笔记(jdk7)书中的光盘里的源码,不知大家需要不,里面都是新手 的好 Develop 238万源代码下载- www.pudn.com...

    文件名称: java下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 1272 KB 上传时间: 2013-04-01 下载次数: 18 提 供 者: 孙鹏启 详细 ...

  9. java实体序列化_java – 在JPA实体序列化(JSON)上防止JAX-RS中...

    我有一个实体如下: @XmlRootElement @Entity @Table(name="CATEGORY") @Access(AccessType.FIELD) @Cache ...

最新文章

  1. Visual Paradigm 教程[UML]:如何在SoaML中建模多方服务?
  2. 1、利用蓝牙定位及姿态识别实现一个智能篮球场套件(一)——用重写CC2541透传模块做成智能手环...
  3. ubuntu常用指令
  4. 第四次游戏革命:全息游戏 from:http://www.cnblogs.com/alamiye010/archive/2012/08/15/2640881.html...
  5. php mysql生日提醒_基于AIML的PHP聊天机器人
  6. JAVA EXCEL API(jxl)简介
  7. oc 协议 回调 静态成员_每日一问:c++类的成员函数,能作为线程的参数吗?
  8. 作者:冷芳玲(1978-),女,博士,东北大学计算机科学系讲师
  9. python 切片_零基础学python_11_列表(切片+遍历切片+复制)
  10. 概率论与数理统计 (二)计算题和应用题
  11. linux tomcat6安装及配置
  12. Ubuntu14.04 用 CrossOver 安装 TMQQ2013
  13. 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第3章 应用开发
  14. 读书:在别人的盯梢儿和嚼舌根中茁壮成长 | 杂谈
  15. Google SketchUp For Dummies
  16. 帝国cms没有标题图片就显示默认图片
  17. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java小型超市货物仓储管理系统w8wry
  18. Arduino - 输出引脚扩流
  19. 大数据在金融行业的应用
  20. Angular Landing – Material Design Angular App Landing Page

热门文章

  1. 【Vue3】如何使用插槽
  2. EasyPOI 教程以及完整工具类的使用
  3. java计算机毕业设计-学生宿舍故障报修管理信息系统-源程序+mysql+系统+lw文档+远程调试
  4. 给你的网站添加google翻译
  5. 动态gmm模型学习笔记3-动态面板回归的GMM方法
  6. 可以把将日文汉字转换成平假名、片假名、罗马音的KaKaSi
  7. 兰州数据共享应用助力智慧城市
  8. 孤岛效应_打破那些云安全孤岛
  9. 正则验证——常用的正则表达式
  10. 记录一下爬取微信小程序失败案例,fiddler抓包