Elastic Stack简介和Elasticsearch基本介绍
1. Elastic Stack簡介
1.1簡介
ELK是一個免費開源的日志分析架構技術棧總稱,官網https://www.elastic.co/cn。包含三大基礎組件,分別是Elasticsearch、Logstash、Kibana。但實際上ELK不僅僅適用于日志分析,它還可以支持其它任何數據搜索、分析和收集的場景,日志分析和收集只是更具有代表性。并非唯一性。下面是ELK架構:
?
隨著elk的發展,又有新成員Beats、elastic cloud的加入,所以就形成了Elastic Stack。所以說,ELK是舊的稱呼,Elastic Stack是新的名字。
?
1.2特色
-
處理方式靈活:elasticsearch是目前最流行的準實時全文檢索引擎,具有高速檢索大數據的能力。
-
配置簡單:安裝elk的每個組件,僅需配置每個組件的一個配置文件即可。修改處不多,因為大量參數已經默認配在系統中,修改想要修改的選項即可。
-
接口簡單:采用json形式RESTFUL API接受數據并響應,無關語言。
-
性能高效:elasticsearch基于優秀的全文搜索技術Lucene,采用倒排索引,可以輕易地在百億級別數據量下,搜索出想要的內容,并且是秒級響應。
-
靈活擴展:elasticsearch和logstash都可以根據集群規模線性拓展,elasticsearch內部自動實現集群協作。
-
數據展現華麗:kibana作為前端展現工具,圖表華麗,配置簡單。
1.3組件介紹
Elasticsearch
Elasticsearch 是使用java開發,基于Lucene、分布式、通過Restful方式進行交互的近實時搜索平臺框架。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Logstash
Logstash 基于java開發,是一個數據抽取轉化工具。一般工作方式為c/s架構,client端安裝在需要收集信息的主機上,server端負責將收到的各節點日志進行過濾、修改等操作在一并發往elasticsearch或其他組件上去。
Kibana
Kibana 基于nodejs,也是一個開源和免費的可視化工具。Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以匯總、分析和搜索重要數據日志。
Beats
Beats 平臺集合了多種單一用途數據采集器。它們從成百上千或成千上萬臺機器和系統向 Logstash 或 Elasticsearch 發送數據。
Beats由如下組成:
Packetbeat:輕量型網絡數據采集器,用于深挖網線上傳輸的數據,了解應用程序動態。Packetbeat 是一款輕量型網絡數據包分析器,能夠將數據發送至 Logstash 或 Elasticsearch。其支 持ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、MongoDB、Memcache等協議。
Filebeat:輕量型日志采集器。當您要面對成百上千、甚至成千上萬的服務器、虛擬機和容器生成的日志時,請告別 SSH 吧。Filebeat 將為您提供一種輕量型方法,用于轉發和匯總日志與文件,讓簡單的事情不再繁雜。
Metricbeat :輕量型指標采集器。Metricbeat 能夠以一種輕量型的方式,輸送各種系統和服務統計數據,從 CPU 到內存,從 Redis 到 Nginx,不一而足。可定期獲取外部系統的監控指標信息,其可以監控、收集 Apache http、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper等服務。
Winlogbeat:輕量型 Windows 事件日志采集器。用于密切監控基于 Windows 的基礎設施上發生的事件。Winlogbeat 能夠以一種輕量型的方式,將 Windows 事件日志實時地流式傳輸至 Elasticsearch 和 Logstash。
Auditbeat:輕量型審計日志采集器。收集您 Linux 審計框架的數據,監控文件完整性。Auditbeat 實時采集這些事件,然后發送到 Elastic Stack 其他部分做進一步分析。
Heartbeat:面向運行狀態監測的輕量型采集器。通過主動探測來監測服務的可用性。通過給定 URL 列表,Heartbeat 僅僅詢問:網站運行正常嗎?Heartbeat 會將此信息和響應時間發送至 Elastic 的其他部分,以進行進一步分析。
Functionbeat:面向云端數據的無服務器采集器。在作為一項功能部署在云服務提供商的功能即服務 (FaaS) 平臺上后,Functionbeat 即能收集、傳送并監測來自您的云服務的相關數據。
Elastic cloud
基于 Elasticsearch 的軟件即服務(SaaS)解決方案。通過 Elastic 的官方合作伙伴使用托管的 Elasticsearch 服務。
?
2. Elasticsearch是什么
2.1搜索是什么
概念:用戶輸入想要的關鍵詞,返回含有該關鍵詞的所有信息。
場景:
1互聯網搜索:谷歌、百度、各種新聞首頁
2 站內搜索(垂直搜索):企業OA查詢訂單、人員、部門,電商網站內部搜索商品(淘寶、京東)場景。
2.2 數據庫做搜索弊端
2.2.1站內搜索(垂直搜索):數據量小,簡單搜索,可以使用數據庫。
問題出現:
l 存儲問題。電商網站商品上億條時,涉及到單表數據過大必須拆分表,數據庫磁盤占用過大必須分庫(mycat)。
l 性能問題:解決上面問題后,查詢“筆記本電腦”等關鍵詞時,上億條數據的商品名字段逐行掃描,性能跟不上。
l 不能分詞。如搜索“筆記本電腦”,只能搜索完全和關鍵詞一樣的數據,那么數據量小時,搜索“筆記電腦”,“電腦”數據要不要給用戶。
2.2.2互聯網搜索,肯定不會使用數據庫搜索。數據量太大。PB級。
2.3全文檢索、倒排索引和Lucene
全文檢索
倒排索引。數據存儲時,經行分詞建立term索引庫。見畫圖。
倒排索引源于實際應用中需要根據屬性的值來查找記錄。這種索引表中的每一項都包括一個屬性值和具有該屬性值的各記錄的地址。由于不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而稱為倒排索引(inverted index)。帶有倒排索引的文件我們稱為倒排索引文件,簡稱倒排文件(inverted file)。
Lucene
就是一個jar包,里面封裝了全文檢索的引擎、搜索的算法代碼。開發時,引入lucence的jar包,通過api開發搜索相關業務。底層會在磁盤建立索引庫。
2.4 什么是Elasticsearch
簡介
?
官網:https://www.elastic.co/cn/products/elasticsearch
?
Elasticsearch的功能
-
分布式的搜索引擎和數據分析引擎
搜索:互聯網搜索、電商網站站內搜索、OA系統查詢
數據分析:電商網站查詢近一周哪些品類的圖書銷售前十;新聞網站,最近3天閱讀量最高的十個關鍵詞,輿情分析。
-
全文檢索,結構化檢索,數據分析
全文檢索:搜索商品名稱包含java的圖書select * from books where book_name like "%java%"。
結構化檢索:搜索商品分類為spring的圖書都有哪些,select * from books where category_id='spring'
數據分析:分析每一個分類下有多少種圖書,select category_id,count(*) from books group by category_id
-
對海量數據進行近實時的處理
分布式:ES自動可以將海量數據分散到多臺服務器上去存儲和檢索,經行并行查詢,提高搜索效率。相對的,Lucene是單機應用。
近實時:數據庫上億條數據查詢,搜索一次耗時幾個小時,是批處理(batch-processing)。而es只需秒級即可查詢海量數據,所以叫近實時。秒級。
Elasticsearch的使用場景
國外:
-
維基百科,類似百度百科,“網絡七層協議”的維基百科,全文檢索,高亮,搜索推薦
-
Stack Overflow(國外的程序討論論壇),相當于程序員的貼吧。遇到it問題去上面發帖,熱心網友下面回帖解答。
-
GitHub(開源代碼管理),搜索上千億行代碼。
-
電商網站,檢索商品
-
日志數據分析,logstash采集日志,ES進行復雜的數據分析(ELK技術,elasticsearch+logstash+kibana)
-
商品價格監控網站,用戶設定某商品的價格閾值,當低于該閾值的時候,發送通知消息給用戶,比如說訂閱《java編程思想》的監控,如果價格低于27塊錢,就通知我,我就去買。
-
BI系統,商業智能(Business Intelligence)。大型連鎖超市,分析全國網點傳回的數據,分析各個商品在什么季節的銷售量最好、利潤最高。成本管理,店面租金、員工工資、負債等信息進行分析。從而部署下一個階段的戰略目標。
國內:
-
百度搜索,第一次查詢,使用es。
-
OA、ERP系統站內搜索。
Elasticsearch的特點
-
可拓展性:大型分布式集群(數百臺服務器)技術,處理PB級數據,大公司可以使用。小公司數據量小,也可以部署在單機。大數據領域使用廣泛。
-
技術整合:將全文檢索、數據分析、分布式相關技術整合在一起:lucene(全文檢索),商用的數據分析軟件(BI軟件),分布式數據庫(mycat)
-
部署簡單:開箱即用,很多默認配置不需關心,解壓完成直接運行即可。拓展時,只需多部署幾個實例即可,負載均衡、分片遷移集群內部自己實施。
-
接口簡單:使用restful api經行交互,跨語言。
-
功能強大:Elasticsearch作為傳統數據庫的一個補充,提供了數據庫所不不能提供的很多功能,如全文檢索,同義詞處理,相關度排名。
?
?
?
2.5 elasticsearch核心概念
2.5.1 lucene和elasticsearch的關系
Lucene:最先進、功能最強大的搜索庫,直接基于lucene開發,非常復雜,api復雜
Elasticsearch:基于lucene,封裝了許多lucene底層功能,提供簡單易用的restful api接口和許多語言的客戶端,如java的高級客戶端(Java High Level REST Client)和底層客戶端(Java Low Level REST Client)
?
起源:Shay Banon。2004年失業,陪老婆去倫敦學習廚師。失業在家幫老婆寫一個菜譜搜索引擎。封裝了lucene的開源項目,compass。找到工作后,做分布式高性能項目,再封裝compass,寫出了elasticsearch,使得lucene支持分布式。現在是Elasticsearch創始人兼Elastic首席執行官。
2.5.2 elasticsearch的核心概念
1 NRT(Near Realtime):近實時
兩方面:
-
寫入數據時,過1秒才會被搜索到,因為內部在分詞、錄入索引。
-
es搜索時:搜索和分析數據需要秒級出結果。
2 Cluster:集群
包含一個或多個啟動著es實例的機器群。通常一臺機器起一個es實例。同一網絡下,集名一樣的多個es實例自動組成集群,自動均衡分片等行為。默認集群名為“elasticsearch”。
3 Node:節點
每個es實例稱為一個節點。節點名自動分配,也可以手動配置。
4 Index:索引
包含一堆有相似結構的文檔數據。
索引創建規則:
-
僅限小寫字母
-
不能包含\、/、 *、?、"、<、>、|、#以及空格符等特殊符號
-
從7.0版本開始不再包含冒號
-
不能以-、_或+開頭
-
不能超過255個字節(注意它是字節,因此多字節字符將計入255個限制)
5 Document:文檔
es中的最小數據單元。一個document就像數據庫中的一條記錄。通常以json格式顯示。多個document存儲于一個索引(Index)中。
book document ? {"book_id": "1","book_name": "java編程思想","book_desc": "從Java的基礎語法到最高級特性(深入的[面向對象](https://baike.baidu.com/item/面向對象)概念、多線程、自動項目構建、單元測試和調試等),本書都能逐步指導你輕松掌握。","category_id": "2","category_name": "java" }6 Field:字段
就像數據庫中的列(Columns),定義每個document應該有的字段。
7 Type:類型
每個索引里都可以有一個或多個type,type是index中的一個邏輯數據分類,一個type下的document,都有相同的field。
注意:6.0之前的版本有type(類型)概念,type相當于關系數據庫的表,ES官方將在ES9.0版本中徹底刪除type。本教程typy都為_doc。
8 shard:分片
index數據過大時,將index里面的數據,分為多個shard,分布式的存儲在各個服務器上面。可以支持海量數據和高并發,提升性能和吞吐量,充分利用多臺機器的cpu。
9 replica:副本
在分布式環境下,任何一臺機器都會隨時宕機,如果宕機,index的一個分片沒有,導致此index不能搜索。所以,為了保證數據的安全,我們會將每個index的分片經行備份,存儲在另外的機器上。保證少數機器宕機es集群仍可以搜索。
能正常提供查詢和插入的分片我們叫做主分片(primary shard),其余的我們就管他們叫做備份的分片(replica shard)。
es6默認新建索引時,5分片,2副本,也就是一主一備,共10個分片。所以,es集群最小規模為兩臺。
2.5.3 elasticsearch核心概念 vs. 數據庫核心概念
| 數據庫Database | 索引Index |
| 表Table | 索引Index(原為Type) |
| 數據行Row | 文檔Document |
| 數據列Column | 字段Field |
| 約束 Schema | 映射Mapping |
總結
以上是生活随笔為你收集整理的Elastic Stack简介和Elasticsearch基本介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apollo之灰度发布
- 下一篇: Elasticsearch相关软件安装