- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
—————————————————————————————
—————————————————————————————
第 1 章 Elasticsearch 概述
什么是搜索?
百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自 己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)。百度 != 搜索
互联网的搜索:电商网站,招聘网站,新闻网站,各种app
IT 系统的搜索:OA 软件,办公自动化软件,会议管理,日程管理,项目管理。
搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然后就期望找到这个关键字相关的有些信息
如果用数据库做搜索会怎么样?京东商城搜索框
如果用数据库做搜索会怎么样?
京东商城搜索框
京东商城后台商品表
商品id
商品名称
商品描述
1千字的商品描述
1千字的商品描述
select * from products where product_name list “%牙膏%”
select * from products where product_name list “%生化机%”
1)比如说“商品描述”字段的长度,有长达数千个,甚至数万个字符,
用数据库来实现搜索,是不太靠
谱的。通常来说,性能会很差的。
这个时候,每次都要对每条记录的所有文本进行扫描,判断包不包含我指定
的这个关键词(比如说“牙膏”),效率非常低。
2)还不能将搜索词拆分开来,尽可能去搜索更多的符合你的期望的结果,
比如输入“生化机”,就搜索不出来“生化危机”。
逐条遍历
1
高露洁牙膏
2
中华牙膏
3
佳洁士牙膏
4
其他牙膏
5
……
1万条
用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差的。
什么是全文检索和 Lucene?
全文检索,倒排索引
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引, 指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行 查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字 的过程。全文搜索搜索引擎数据库中的数据。
商品描述1
生化危机电影
生化
危机
电影
商品描述2
生化危机海报
生化
危机
海报
商品描述3
生化危机文章
生化
危机
文章
商品描述4
生化危机新闻
生化
危机
新闻
倒排索引原理简介1 数据库里的数据2 切词3 倒排索引关键词 ids生化1,2,3,4危机电影1,2,3,41海报2查找:生化机
倒排索引原理简介
1 数据库里的数据
2 切词
3 倒排索引
关键词 ids
生化
1,2,3,4
危机
电影
1,2,3,4
1
海报
2
查找:生化机
返回1,2,3,4商品
文章
3
新闻
4
总结1:数据库里的数据,一共100万条,按照之前的思路,
其实就要扫描100万次,而且每次扫描,都需要匹配那个文 本所有的字符,确认是否包含搜索的关键词,而且还不能将搜索词拆解开来进行检索
总结2:利用倒排索引,进行搜索的话,假设100万条数据,
拆分出来的词语,假设有1000万个词语,那么在倒排索引中,就有1000万行,我们可能并不需要搜索1000万次,很可能,在搜索到第一次的时候,我们就可以找到这个搜索词对应的数据。也可能滴100次,或者第1000次
什么是 Elasticsearch?
Elasticsearch,基于 Lucene,隐藏复杂性,提供简单易用的 RestfulAPI 接口、JavaAPI 接口(还有其他语言的 API 接口)。
关于 Elasticsearch 的一个传说,有一个程序员失业了,陪着自己老婆去英国伦敦学习厨师课程。程序员在失业期间想给老婆写一个菜谱搜索引擎,觉得 Lucene 实在太复杂了,就开发了一个封装了 Lucene 的开源项目:Compass。后来程序员找到了工作,是做分布式的高性能项目的,觉得 Compass 不够,就写了 Elasticsearch,让 Lucene 变成分布式的系统。
Elasticsearch 是一个实时分布式搜索和分析引擎。它用于全文搜索、结构化搜索、分析。全文检索:将非结构化数据中的一部分信息提取出来 ,重新组织,使其变得有一定结构,
然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。
结构化检索:我想搜索商品分类为日化用品的商品都有哪些, select * from products where category_id=日化用品
数据分析:电商网站,最近 7 天牙膏这种商品销量排名前 10 的商家有哪些;新闻网站, 最近 1 个月访问量排名前 3 的新闻版块是哪些
Elasticsearch 的适用场景
维基百科,类似百度百科,
您可能关注的文档
最近下载
- 通信工程施工方案.docx VIP
- 人教版九年级数学第23章单元测试题(含答案).doc VIP
- 教学课件:3D打印技术概述.pptx
- 合益-LS Mtron China管理本土化项目方案建议书-201405.pdf VIP
- 1:25 000 1:50 000光学卫星传感器校正产品质量检验技术规程2023版.docx
- 人教版九年级数学上册《第二十三章单元综合测试卷》测试题及参考答案.docx VIP
- 货物类投标方案(技术方案).docx
- 口腔医学数字技术.pptx VIP
- 2024年市人民政府办公室公开选调(选聘)工作人员考试题(含答案).docx VIP
- 疾控大学习参考答案-卫生应急必修.docx VIP
文档评论(0)