IT学习站-137zw.com

作者: 丁侦球
查看: 97|回复: 0

more +资源更新Forums

more +随机图赏Gallery

2019开运网付费开源商业版|风水起名八字算命易经周易源码...2019开运网付费开源商业版|风水起名八字算命易经周易源码...
网易课堂马丁的Illustrator(Adobe AI)大师课,90节完整版网易课堂马丁的Illustrator(Adobe AI)大师课,90节完整版
价值9999元 筑龙造价全专业(20191214_114251)精品课程推荐价值9999元 筑龙造价全专业(20191214_114251)精品课程推荐
微专业 - Java高级开发工程师(完整版)微专业 - Java高级开发工程师(完整版)
曾奇峰的心理课精神分析30讲,带你深入潜意识,解密你不...曾奇峰的心理课精神分析30讲,带你深入潜意识,解密你不...
词霸天下之3万词汇速记进阶 入门到精通彻底攻克英语完整版词霸天下之3万词汇速记进阶 入门到精通彻底攻克英语完整版

Elasticsearch(6) --- Query查询和Filter查询

Elasticsearch(6) --- Query查询和Filter查询

[复制链接]
丁侦球 | 显示全部楼层 发表于: 2019-11-14 12:35:04
丁侦球 发表于: 2019-11-14 12:35:04 | 显示全部楼层 |阅读模式
查看: 97|回复: 0

你还没有注册,无法下载本站所有资源,请立即注册!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Elasticsearch(6) --- Query查询和Filter查询

说明:该博客对于的Elasticsearch 的版本为7.3。
这篇博客主要分为 :Query查询和Filter查询。有关复合查询聚合查询也会单独写篇博客。
一、概念

1、概念

一个查询语句究竟具有什么样的行为和得到什么结果,主要取决于它到底是处Query还是Filter。两者有很大区别,我们来看下:
Query context 查询上下文 这种语句在执行时既要计算文档是否匹配,还要计算文档相对于其他文档的匹配度有多高,匹配度越高,_score 分数就越高
Filter context 过滤上下文 过滤上下文中的语句在执行时只关心文档是否和查询匹配,不会计算匹配度,也就是得分
看下官方的例子对上面的例子分析下:

  • query 参数表示整个语句是处于 query context 中
  • bool 和 match 语句被用在 query context 中,也就是说它们会计算每个文档的匹配度(_score)
  • filter 参数则表示这个子查询处于 filter context 中
  • filter 语句中的 term 和 range 语句用在 filter context 中,它们只起到过滤的作用,并不会计算文档的得分。
2、查询数据准备

1)创建索引2)添加测试数据看是否成功
Elasticsearch(6) --- Query查询和Filter查询  技术博客 1090617-20190909191822262-1553200431

可以看出索引已经存在,并且下面有5条数据。


二、Query查询

1、match查询

match query: 知道分词器的存在,会对filed进行分词操作,然后再查询
match_all: 查询所有文档
multi_match: 可以指定多个字段
match_phrase: 短语匹配查询,ElasticSearch引擎首先分析(analyze)查询字符串,从分析后的文本中构建短语查询,这意味着必须匹配短语中的所有分词,
并且保证各个分词的相对位置不变重点 通过上面的例子有两点比较重要
1)、文档字段属性如果是一个keyword类型,那就需要完全匹配才能命中。好比这个字段值是12345,那么你不论是1234还是123456都不会命中。
2)、如果是match_phrase,那就是真正的包含关系。好比这个字段值是12345,那么你是1234就会命中,而123456不会命中。因为12345包含1234而不包含123456。
2、term查询和terms查询

term query: 会去倒排索引中寻找确切的term,它并不知道分词器的存在。这种查询适合keyword 、numeric、date
term:查询某个字段为该关键词的文档(它是相等关系而不是包含关系)
terms:查询某个字段里含有多个关键词的文档3、控制查询返回的数量
4、指定返回的字段
5、显示要的字段、去除不需要的字段、可以使用通配符*
6、排序
7、 范围查询

range: 实现范围查询
include_lower: 是否包含范围的左边界,默认是true
include_upper: 是否包含范围的右边界,默认是true8、wildcard查询

允许使用通配符* 和 ?来进行查询
* 代表0个或多个字符
? 代表任意一个字符9、fuzzy实现模糊查询

模糊查询可以在Match和 Multi-Match查询中使用以便解决拼写的错误,模糊度是基于Levenshteindistance计算与原单词的距离。使用如下:有关fuzzy描述可以参考一篇文章:Elasticsearch的误拼写时的fuzzy模糊搜索技术
10、高亮搜索结果

三、Filter查询

filter是不计算相关性的,同时可以cache。因此,filter速度要快于query。
参考

1、Elasticsearch核心技术与实战---阮一鸣(eBay Pronto平台技术负责人
2、ElasticSearch基本查询(Query查询)
3、ElasticSearch入门3: 高级查询
4、ElasticSearch——简单查询、条件查询、聚合查询





来源:http://www.137zw.com
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
137zw.com IT学习站致力于免费提供精品的java技术教程和python技术教程,CCNA书籍/资料/CCNP书籍/资料教程/CCIE书籍/资料/H3C学习/认证/一级建造师考试/微软学习/认证/包括基础教程和高级实战教程,同时也提供分享网站源码下载和互联网相关一系列的技术教程,我们想做的就是让知识分享更有价值!(IT学习站官方唯一域名地址:www.137zw.com 请谨防假冒网站!)本站所有资源全部收集于互联网或网友自行分享,分享目的仅供大家学习与参考,如无意中侵犯您的合法权益,请联系本站管理员进行删除处理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

浙ICP备19022368号-1|Archiver|手机版|IT学习站-137zw.com

GMT+8, 2020-7-4 18:22 , Processed in 0.231488 second(s), 33 queries .

快速回复 返回顶部 返回列表