目录
2.1.站内搜索(垂直搜索):数量小,简单搜索,可以使用数据库、
3.1.2.当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势
3.1.3.随着数据量的增加,Solr的搜索效率会变得更低,而ElasticSearch 却没有明显的变化
1.搜索是什么
1.1.概念
1.2.场景
1.2.1.互联网搜索
1.2.2. 站内搜索(垂直搜索)
2.数据库的弊端
2.1.站内搜索(垂直搜索):数量小,简单搜索,可以使用数据库、
2.1.1存储问题。
电商网站商品上亿条时,涉及到单表数据过大必须拆分表,数据库磁盘占用过大必须分库(mycat)。
2.1.2.性能问题
解决上面问题后,查询“笔记本电脑”等关键词时,上亿条数据 的商品名字段逐行扫描,性能跟不上。
2.1.3.不能分词
如搜索“笔记本电脑”,只能搜索完全和关键词一样的数据,那么数据量小时,搜索“笔记电脑”,“电脑”数据要不要给用户
2.2.互联网搜索
肯定不会使用数据库搜索,数据量太大,pb级别,我们可以使用搜索引擎来解决数据库搜索的问题: 搜索也是一款数据库,搜索可以进行分词搜索---搜索速度非常快
3.常见的搜索引擎
3.1.ElasticSearch与Solr比较
3.1.1.当单纯的对已有数据进行搜索时,Solr更快
3.1.2.当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势
3.1.3.随着数据量的增加,Solr的搜索效率会变得更低,而ElasticSearch 却没有明显的变化
3.1.4.总结
1.es基本是开箱即用(解压就可以用!)【南京】 ,非常简单。Solr 安装略微复杂一丢丢!
2.Solr 利用Zookeeper进行分布式管理,而Elasticsearch<mark>自身带有分布式协调管理功能</mark>
3.Solr 支持更多格式的数据,比如JSON、XML、 CSV ,而Elasticsearch仅支持json文件格式
4.Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心 功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑
5.Solr查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用ES建立索引快(即查询慢) ,即实时性查询快,用于facebook新浪等搜索Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。
6.Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高
4.Elasticsearch的概念
The Elastic Stack, 包括 Elasticsearch【搜索,分析】、 Kibana【可视 化】、 Beats 和 Logstash【数据的搜集】(也称为 ELK Stack)能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索,分析和可视化.Elaticsearch,简称为 ES, ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 ElasticStack 技术栈的核心.它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。
5.Elasticsearch的使用场景
5.1.国外
维基百科,类似百度百科,“网络七层协议”的维基百科,全文检索,高亮,搜索推荐
Stack Overflflow(国外的程序讨论论坛),相当于程序员的贴吧.遇到it问题去上面发帖,热心网友下面回帖解答。
GitHub(开源代码管理),搜索上千亿行代码.电商网站,检索商品日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK技术,elasticsearch+logstash+kibana)
商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户,比如说订阅《java编程思想》的监控,如果价格低于27块钱,就通知我,我就去买。
BI系统,商业智能(Business Intelligence)。大型连锁超市,分析全国网点传回的数据,分析各个商品在什么季节的销售量最好、利润最高。成本管理,店面租金、员工工资、负债等信息进行分析。从而部署下一个阶段的战略目标。
5.2.国内
百度搜索,第一次查询,使用es。