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. Visual Studio Code搭建TypeScript开发环境
  2. servlet中访问mysql无法包含中文的解决
  3. 6.1Python文件的操作(一)
  4. open打开新窗口时的选项
  5. Python学习入门基础教程(learning Python)--5 Python文件处理
  6. sql server dateadd()
  7. 怎么就没发现华为Mate20 pro有这么多神奇功能!这波黑科技盘它!
  8. 1284. Minimum Number of Flips to Convert Binary Matrix to Zero Matrix
  9. powerbi导入地图_PowerBI地图可视化的那些套路
  10. Android| failed to connect to /10.0.2.2 (port 80) after 10000ms
  11. python中readlines是什么意思_python中read、readline、readlines之间的区别
  12. 蚂蚁金服CTO程立:技术的价值与意义_在我看来是这样的
  13. 17.深入浅出:非正弦波发生电路——参考《模拟电子技术基础》清华大学华成英主讲
  14. 高一凡-数据结构第1章-绪论
  15. 趋势科技将安全工具HijackThis开源
  16. SM9使用的密钥导出函数
  17. 一个非常好用的图表工具
  18. 一个类如何实现自杀?
  19. 敏捷开发系列之旅 第三站(认识FDD特征驱动开发)
  20. 【论文阅读SIGCOMM2019】Neural packet classification

热门文章

  1. ORACLE语句大全
  2. 测试鼠标宏软件,KINBAS VP900鼠标宏设置软件
  3. 使用AVPlayer+AFNetworking封装一个带有缓存逻辑的音频播放器
  4. 京东万能转链API接口 含商品信息优惠券转链 京东线报如何转链?
  5. 【Python实现杨辉三角】
  6. 使用wget下载GLDAS数据
  7. php博客添加live2d,在Hexo博客上添加可爱的Live 2D模型
  8. 零极点图定性绘制系统的幅频特性
  9. eclipse JRebel破解
  10. java字符串数组排序