1、什么是搜索?
搜索,就是在任何场景下,找寻你想要的信息,这个时候会输入一段你要搜索的关键字,然后就期望找到这个关键字的有些信息
2、如果用数据库做搜索会怎么样?
(1)如检索的文本太长,效率会很低
(2)不能将搜索词拆分出来
3、什么是全文检索和Lucene?
(1)全文检索,搜索词拆分和倒排索引
(2)lucence,jar包,里面封装了各种建立倒排索引,以及进行搜索的代码,包括各种算法。
4、什么是Elasticsearch?
(1)lucence是单机部署,ES自动维护数据分布到多节点的索引建立,还有搜索请求分布到多个节点的执行
(2)自动维护数据的冗余副本
(3)ES是分布式、高性能、高可用、可伸缩的搜索和分析系统
5、Elasticsearch的功能?
(1)分布式的搜索引擎和数据分析引擎
搜索:网站的站内搜索,IT系统的检索
数据分析:新闻网站,最近1个月访问量排名前3的新闻版块是哪些?
(2)全文检索、结构化检索、数据分析
全文检索:select * from products where product_name like '%手机%'
结构化检索:select * from products where category_id like='日化用品'
数据分析:select count(*) from products group by category_id
部分匹配、自动完成、搜索纠错、搜索推荐
(3)对海量数据进行近实时的处理
近实时:在秒级别对数据进行搜索和分析,反之离线批处理
分布式,自动可以将海量数据分散到多台服务器存储和检索
6、Elasticsearch的使用场景
(1)维基百科,全文检索,高亮,搜索推荐
(2)The Guardian,用户行为日志+社交网络数据,对每篇新闻做数据分析
(3)Stack Overflow,全文检索,搜索相关问题和答案
(4)github,搜索上千亿行代码
(5)电商网站,检索商品
(6)日志数据分析,logstash采集日志,ES进行复杂的数据分析和挖掘,kibana进行可视化
(7)商品价格监控网站,用户设定某商品的价格阈值,发送通知
(8)BI系统
(9)站内搜索(电商、招聘、门户等等),IT系统搜索(OA,CRM,ERP),数据分析
7、Elasticsearch的特点
(1)可以作为一个大型分布式集群技术,处理PB级数据
(2)将全文检索、数据分析和分布式技术合并在一起,形成了ES
(3)对用户而言,即开箱即用,非常简单,中小型应用,直接3分钟部署
(4)ES提供了数据库不能提供的很多功能,比如全文检索、同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理
8、Lucene和Elasticsearch的前世今生
(1)lucence是功能强大的搜索库,直接基于Lucene开发,api复杂,需要深入理解各种索引结构
(2)ES基于Lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口、其他语言的接口
9、Elasticsearch的核心概念
(1)near realTime:近实时,从写入数据到可以被搜索到,有1s的延时,es搜索和分析可以达到秒级
(2)Cluster 集群
(3)Node,节点
(4)document&field,文档,json数据结构,一个document里面有多个field
(5)Index,索引,一个index包含多个document,一个index包含类似的document
(6)type:类型,每个index都有1个或多个type,type是index中的一个逻辑数据分类
商品index,里面存放了所有商品数据,商品document
日化商品type:product_id,product_name,
电器商品type:product_id,product_name,service_period
生鲜商品type:product_id,product_name,eat_period
每一个type里面,都会包含一堆document
(7)shared,index会被拆分为多个shared,每个shared存放index的一部分,散落在多台服务器
横向扩展
分布式执行
(8)replica,每个shared可以指定一个或多个shared,多个replica可以提升搜索操作的性能
primary shared,建立索引时一次设置,不能修改,默认为5个
replica,默认是1个,随时修改
默认每个索引10个share,最小的高可用配置是2台服务器,primary 和replica的shared不能放在同一服务器上
10、Elasticsearch的核心概念 vs. 数据库核心概念
Elasticsearch 数据库
Document 行
Type 表
Index 库