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 ;该博主也写了许多总结方法;
es java 模糊查询_java使用elasticsearch进行模糊查询-已在项目中实际应用相关推荐
- java对es做聚合查询_java操作elasticsearch实现聚合查询
1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...
- java web数据库查询_Java Web开发之信息查询方式总结
本文实例讲述了Java Web开发之信息查询方式总结.分享给大家供大家参考.具体如下: 这里介绍的查询方式有: ① 根据某个特定的字段查询: ② 在多个字段中查询: ③ 根据任意字段查询: ④ 任意字 ...
- java design按钮_DesignJava 设计模式,讲述 的各种 方便在项目中进行 框架结构 Develop 238万源代码下载- www.pudn.com...
文件名称: DesignJava下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 1675 KB 上传时间: 2013-11-21 下载次数: 2 提 供 者: 1 ...
- java 拼音模糊查询_java实现首字母模糊查询的功能
①,要实现首字母模糊匹配,首先我们需要得到你要搜索内容的首字母,对于java来说,有一个非常实用的包:pinyin4j.jar. 这个拼音包中的PinyinHelper 方法可以得到String的首字 ...
- java 图像锐化_Java实现图像的模糊与锐化实例
时间:2018-09-28 概述:图片模糊 锐化 Java 图像处理的一个例子,实现图片的模糊和锐化,在PhotoShop中,这是一个很常用的滤镜效果,用Java同样也可实现这些强大的功能,图像锐化效 ...
- java二级下拉列表_java map实现二级联动查询(省市区下拉列表查询)
1.Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省市级联选择框,当选择省份信息 ...
- java域名查询_Java技巧: 根据网址/域名查询DNS/IP地址
需求: 给定一个URL地址, 例如: http://www.cncounter.com/tools/shorturl.php, 解析对应的IP地址和端口号. 说明: 本文不涉及底层的 DNS 协议, ...
- java存入光盘_java 这是 学习笔记(jdk7)书中的光盘里的源码,不知大家需要不,里面都是新手 的好 Develop 238万源代码下载- www.pudn.com...
文件名称: java下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 1272 KB 上传时间: 2013-04-01 下载次数: 18 提 供 者: 孙鹏启 详细 ...
- java实体序列化_java – 在JPA实体序列化(JSON)上防止JAX-RS中...
我有一个实体如下: @XmlRootElement @Entity @Table(name="CATEGORY") @Access(AccessType.FIELD) @Cache ...
最新文章
- Visual Paradigm 教程[UML]:如何在SoaML中建模多方服务?
- 1、利用蓝牙定位及姿态识别实现一个智能篮球场套件(一)——用重写CC2541透传模块做成智能手环...
- ubuntu常用指令
- 第四次游戏革命:全息游戏 from:http://www.cnblogs.com/alamiye010/archive/2012/08/15/2640881.html...
- php mysql生日提醒_基于AIML的PHP聊天机器人
- JAVA EXCEL API(jxl)简介
- oc 协议 回调 静态成员_每日一问:c++类的成员函数,能作为线程的参数吗?
- 作者:冷芳玲(1978-),女,博士,东北大学计算机科学系讲师
- python 切片_零基础学python_11_列表(切片+遍历切片+复制)
- 概率论与数理统计 (二)计算题和应用题
- linux tomcat6安装及配置
- Ubuntu14.04 用 CrossOver 安装 TMQQ2013
- 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第3章 应用开发
- 读书:在别人的盯梢儿和嚼舌根中茁壮成长 | 杂谈
- Google SketchUp For Dummies
- 帝国cms没有标题图片就显示默认图片
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java小型超市货物仓储管理系统w8wry
- Arduino - 输出引脚扩流
- 大数据在金融行业的应用
- Angular Landing – Material Design Angular App Landing Page