分布式@架构师ElasticSearch学习笔记

ElasticSearch第1天 了解ElasticSearch

2021-10-18  本文已影响0人  赵旻峰

今日目标

简单了解ElasticSearch的核心概念,历史

1.ElasticSearch是什么,做什么的

ElasticSearch(简称ES)是一个基于Lucene的搜索服务器,是一个 【开源】 的,【高扩展】 的 分布式搜索引擎,可以用于搜索!是排名第一的搜索引擎类应用,可以近乎实时的存储,检索数据。

2.ElasticSearch和Lucene的关系

Lucene是最先进、功能最强大的搜索库,但如果直接基于lucene开发,api非常复杂,实现一些简单的功能,也需要在深入理解原理(各种索引结构)的基础上写大量的java代码,ElasticSearch基于Lucene进行了封装,隐藏复杂性,提供了简单易用的restful api接口,提供了对多种语言的支持,开箱即用。
关于ElasticSearch的一个传说,有一个程序员失业了,陪着自己老婆去英国伦敦学习厨师课程。程序员在失业期间想给老婆写一个菜谱搜索引擎,觉得Lucene实在太复杂了,就开发了一个封装了Lucene的开源项目,compass。后来程序员找到了工作,是做分布式的高性能项目的,觉得compass不够,就写了ElasticSearch,让Lucene变成分布式的系统。

3.使用场景

1、检索。ES本身作为一个搜索引擎,用来处理检索的任务再合适不过。你可以在线上项目中直接将内容写入ES以提供检索服务,也可以把以往的数据导入ES以处理特定的需求。
2、统计。ES的统计也是基于检索功能的,聚合功能使得统计结果处理起来非常方便。如果你只需要统计而不用检索,可能有其他工具更适合你,比如Spark SQL。
3、其他的诸如文档存错查询,日志存储和索引,监控基础信息、应用程序性能和使用情况,地理数据存储和分析。
总之就是可以对静态数据进行存储搜索,对动态数据(时间序列数据)进行产品分析、报告、异常检测 ……

4.为什么不用mysql做全文搜索

mysql做全文检索的话,查询速度会非常的慢,比如 %xxx% 所以在大数据量的情况下,用ES可以以前所未有的速度进行检索。

5.为什么Elasticsearch不适合做数据存储?

ES同时还是一个文档数据库,但并不能完全代替数据库,因为ES的核心是检索,没有用户验证和权限控制,无法多对多,MYSQL支持事务和访问权限控制,ES不支持事务和访问权限控制,虽然ElasticSearch 比 MySQL 更适合复杂条件查询,但是有好就有弊,ES为了查询做很多的准备工作,插入速度就会慢于 MySQL,而且数据存入ES后并不是立马就能检索到(可以配置,但会非常影响性能),所以在存储时使用mysql,而在搜索,统计时使用ES时一个非常棒的选择。

6.关于ES和Solr的比较,同类产品,如何选择

Elasticsearch 的竞争对手只有一个,Apache Solr,有着和 Elasticsearch 相似的特性,但 Solr 的发展势头远不及 Elasticsearch。Solr学习成本相对较高,但功能更丰富,生态更好,如果你已经在使用solr了,请继续使用它,因为迁移到Elasticsearch并不会带来具体的优势。如果你刚开始使用全文索引,推荐ES,Elasticsearch由于其易用性而在较新的开发人员中更受欢迎。

7.PHP开发者如何使用ElasticSearch?其他语言如何使用

和Redis的使用一样,php也提供了对应的扩展包,Elasticsearch-PHP是PHP连接Elasticsearch库的扩展,是用PHP语言开发的,类似于PHP通过Predis操作redis库的功能。可以通过composer或者github下载,集成到现有的php项目中,实现对ES的使用。

8.ElasticSearch 是不是可以替换mysql了呢

完全替代肯定不行,脱离业务场景谈技术选型都是瞎扯。es和mysql两者都能解决一部分问题,能力也有交集。而各自都有独特能力的一面,不能空谈取代。难易程度来说,Mysql学习成本要比ES低的多,ES的技术栈主要也是ELK(ELK技术,elasticsearch+logstash+kibana)。所以其具体用途可以有以下几个:用户行为日志(点击,浏览,收藏,评论)等的分析;电商网站检索商品;日志数据分析(logstash采集日志,ES进行复杂的数据分析,kibana展示)

9.ElasticSearch 中的重要术语

明日学习计划

Elasticsearch的安装配置和在PHP-Laravel项目中集成

总结

现在是大数据时代,任何网站都会面临 “搜素” 体积不断增大的问题,而这些问题mysql并不能很好的解决,所以是不是一开始就可以“预见性”的使用ES进行数据的检索,不建议完全采用ES作为数据库,而是作为一个分布式搜索服务,和数据库配合使用,让其自动同步mysql数据库数据。

上一篇下一篇

猜你喜欢

热点阅读