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进行模糊查询相关推荐

  1. es java 模糊查询_java使用elasticsearch进行模糊查询-已在项目中实际应用

    java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...

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

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

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

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

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

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

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

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

  6. java数据查询_Java中的大量数据查询

    问题描述:在通常的三层构架下,客户通过Browser请求Web服务器查询数据库,而查询结果是上千条甚至是上百万条记录,要求查询 问题描述:在通常的三层构架下,客户通过Browser请求Web服务器查询 ...

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

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

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

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

  9. Elasticsearch实战——地理位置查询

    Elasticsearch实战--地理位置查询 文章目录 Elasticsearch实战--地理位置查询 1. 半径查询(geo_distance query) 2. 指定矩形内的查询(geo_bou ...

  10. Elasticsearch索引和查询性能调优的21条建议【下】

    Elasticsearch是一款流行的分布式开源搜索和数据分析引擎,具备高性能.易扩展.容错性强等特点.它强化了Apache Lucene的搜索能力,把掌控海量数据索引和查询的方式提升到一个新的层次. ...

最新文章

  1. iOS应用开发入门(2)——添加一个按钮
  2. 常见的8个前端防御性编程方案
  3. vue项目创建,redis列表字典操作,django用redis的第二种方法
  4. c语言与64位windows不兼容_微软发布可模拟 64 位 x86 程序的 ARM 版 Windows 10
  5. 简述导线平差计算的五个步骤_RTK技术导线测量和全站仪导线测量有什么区别?...
  6. c语言一年日历程序,c语言日历程序
  7. 开机动画适配方案_小米CC开机动画首曝光:7月2日在北京水立方发布
  8. leetcode371
  9. Android----View
  10. mysql数据库面试题学生表_SQL笔试题:下面是学生表(student)的结构说明
  11. IBM SPSS Statistics定义变量使用介绍
  12. 产品读书《认知盈余》
  13. 线性代数的本质(Essense of Linear Algebra)——3Blue1Brown
  14. 点云最小二乘法拟合空间直线
  15. 计算机2进制、4进制、8进制、10进制、16进制、32进制计算规则
  16. linux irq 接口,中断机制 – Linux内核API irq_set_chip_data
  17. 疫情信息管理系统(附源代码及数据库)
  18. MFC中简单图形的平移与简单旋转
  19. 动态IP与静态IP的区别
  20. 【PowerDesigner】Powerbuilder 11.5破解方法

热门文章

  1. 倍福PLC选型--如何看电机是多圈绝对值还是单圈绝对值编码器
  2. 软件测试实例 面试经验
  3. 基于comsol软件的三维单模光纤模拟
  4. 天勤2022数据结构(二)栈和队列
  5. 我的世界服务器修改种子,《我的世界》服务器种子代码大全 最新种子代码分享...
  6. Hbase 操作命令
  7. 帆软报表填报成功后实时刷新当前页面
  8. 单例模式-序列号生成器
  9. 有限差分法与有限单元法的区别
  10. JRtplib开发笔记(一):JRtplib简介、JThread库编译