Elasticsearch(ES)作为被广泛地知道是一个开源搜索引擎,在开始了解ES之前,我们先对自己问几个问题。
为什么需要这样一个技术?
在日常工作中ES解决了什么问题,这些问题用现有技术无法解决么?
ES是如何解决上述这一类问题的?
ES在解决上述问题时,又会有什么局限?
Q1.数据库字段太多,查询太慢,索引没有办法再做优化
Q2.数据库一个count就拖死全表
Q3.mysql的limit翻到几十几百万页后实在是太慢
Q4.数据库like实在太慢,每次like整个服务器cpu内存飙高,拖慢整个线上服务
Q5.想要对外/内提供db里的数据的全文检索服务
Q6.提供日志(程序运行)查询功能
在最流行的innodb之类的存储引擎在计算count的时候非常的慢。
还有mysql的like,其实没什么玄幻的,每次做like本质还是查询内容去和数据库字段做字符串匹配。非常地慢。
企业里对数据的查询一般可以分为三种:列表查询、详情查询和统计查询。看名字也可以理解的差不多了,列表一般就是列表页对应的查询,详情查询一般就是具体id对应的详情查询,而统计查询一般都是在看一些数值之类的报表,也就是一堆count值。
这三种查询里,mysql做起来最困难的是1和3,即列表查询和统计查询。列表查询这种场景也会对应各种各样的查询条件,例如字段等于/小于/大于/不等判断,或者像字符串的严格匹配/前后缀模糊查询
ES数据架构的主要概念(与关系数据库Mysql对比)
image.png
ELK是什么?
ELK=elasticsearch+Logstash+kibana
elasticsearch:后台分布式存储以及全文检索
logstash: 日志加工、“搬运工”
kibana:数据可视化展示。
ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工作。
ES官方的中文视频:https://www.elastic.co/cn/webinars/getting-started-elasticsearch?baymax=rtp&storm=learn
ES官方的英文文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/_cluster_health.html
ES官方中文文档:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/query-dsl-intro.html
网友评论