1、搜索引擎
网页搜索引擎
:可以用于检索想要查找的网站或者网页
业务搜索引擎
:提供内部的业务查询
日志搜索引擎
:用于分析处理日志
- 用户访问日志
- 404
- 500
- 统计今天所有用户访问网站出现了 多少次500的情况
- 机器运行日志
- INFO
- WARN
- ERROR
- 统计分析今天出现的所有ERROR的日志
2、传统的做法
- 将业务数据和日志数据都存储在RDBMS中
- 类提供业务搜索和日志搜索
select * from table where name like %keyword%;
id tile url content
1 百度首页 www.baidu.com 【抗击肺炎 新闻 hao123 图片】
- 问题:容量非常小,如果数据量大,性能非常差
- 可以对每列构建索引
- 搜索时,通过某列的关键字来搜索,不是完整的搜索
- 搜索:抗击肺炎
- 即使content这一列构建了索引,但是用like %来匹配,数据库中不走索引
- where content = ‘抗击肺炎’
走索引,但是查询不到
- where content like “%抗击肺炎%”
能查到,不走索引
- 数据库中无法对值进行分词构建索引
3、分布式搜索引擎工具
Lucene
:最早的搜索引擎工具
- Hadoop的诞生
- GFS:Google用于分布式存储
- |
- NDFS:Hadoop创始人正在负责的项目Nutch
- |
- HDFS:发布Hadoop
- 缺点:不好用,开发接口非常复杂,学习以及开发成本非常高
Solr
:基于Lucene之上构建的工具
- 底层还是Lucene,在上层构建了新的开发接口,比较好用
- 如果数据量比较大,建立索引,solr搜索性能会非常差
ElasticSearch
:基于Lucene的
- 汲取了前两代搜索引擎的缺点,规避了
- 对比Solr
- solr依赖于Zookeeper实现分布式集群管理,
ES自己管理集群
,自己实现了类似于Zookeeper的功能 - solr接口比较丰富,
es只提供了json数据接口
- solr本身的功能非常强大,ES只注重
索引存储构建
,其他的功能都通过插件来实现