Elasticsearch(ES)作為被廣泛地知道是一個(gè)開(kāi)源搜索引擎,在開(kāi)始了解ES之前,我們先對(duì)自己?jiǎn)枎讉€(gè)問(wèn)題。
為什么需要這樣一個(gè)技術(shù)?
在日常工作中ES解決了什么問(wèn)題,這些問(wèn)題用現(xiàn)有技術(shù)無(wú)法解決么?
ES是如何解決上述這一類問(wèn)題的?
ES在解決上述問(wèn)題時(shí),又會(huì)有什么局限?
Q1.數(shù)據(jù)庫(kù)字段太多,查詢太慢,索引沒(méi)有辦法再做優(yōu)化
Q2.數(shù)據(jù)庫(kù)一個(gè)count就拖死全表
Q3.mysql的limit翻到幾十幾百萬(wàn)頁(yè)后實(shí)在是太慢
Q4.數(shù)據(jù)庫(kù)like實(shí)在太慢,每次like整個(gè)服務(wù)器cpu內(nèi)存飆高,拖慢整個(gè)線上服務(wù)
Q5.想要對(duì)外/內(nèi)提供db里的數(shù)據(jù)的全文檢索服務(wù)
Q6.提供日志(程序運(yùn)行)查詢功能
在最流行的innodb之類的存儲(chǔ)引擎在計(jì)算count的時(shí)候非常的慢。
還有mysql的like,其實(shí)沒(méi)什么玄幻的,每次做like本質(zhì)還是查詢內(nèi)容去和數(shù)據(jù)庫(kù)字段做字符串匹配。非常地慢。
企業(yè)里對(duì)數(shù)據(jù)的查詢一般可以分為三種:列表查詢、詳情查詢和統(tǒng)計(jì)查詢。看名字也可以理解的差不多了,列表一般就是列表頁(yè)對(duì)應(yīng)的查詢,詳情查詢一般就是具體id對(duì)應(yīng)的詳情查詢,而統(tǒng)計(jì)查詢一般都是在看一些數(shù)值之類的報(bào)表,也就是一堆count值。
這三種查詢里,mysql做起來(lái)最困難的是1和3,即列表查詢和統(tǒng)計(jì)查詢。列表查詢這種場(chǎng)景也會(huì)對(duì)應(yīng)各種各樣的查詢條件,例如字段等于/小于/大于/不等判斷,或者像字符串的嚴(yán)格匹配/前后綴模糊查詢
ES數(shù)據(jù)架構(gòu)的主要概念(與關(guān)系數(shù)據(jù)庫(kù)Mysql對(duì)比)

ELK是什么?
ELK=elasticsearch+Logstash+kibana
elasticsearch:后臺(tái)分布式存儲(chǔ)以及全文檢索
logstash: 日志加工、“搬運(yùn)工”
kibana:數(shù)據(jù)可視化展示。
ELK架構(gòu)為數(shù)據(jù)分布式存儲(chǔ)、可視化查詢和日志解析創(chuàng)建了一個(gè)功能強(qiáng)大的管理鏈。 三者相互配合,取長(zhǎng)補(bǔ)短,共同完成分布式大數(shù)據(jù)處理工作。
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