一、概述
簡介
Elasticsearch 是一個分佈式、RESTful 風格的搜索和數據分析引擎。它是基於Apache Lucene開發的,開發語言爲Java,使用Apache 開源協議進行開源。Elasticsearch的特點是:分佈式存儲,近實時數據搜索和分析,穩定,可靠,快速,且安裝使用方便。
同類型項目:
Apache Solr:一個開源的搜索服務,使用Java語言開發,主要基於HTTP和Apache Lucene實現的
Splunk:一個託管的日誌文件管理工具,可收集、索引和利用所有應用程序、服務器和設備生成的快速移動型計算機數據
Apache Lucene
Apache Lucene 創建於1999年,2005年成爲Apache的頂級開源項目。Lucene 的創始人是 Doug Cutting,他也是 Hadoop 的作者。
Lucene 的目的是爲軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此爲基礎建立起完整的全文檢索引擎。有以下特點:
-
基於Java語言開發,屬於搜索引擎類庫
-
高性能、易拓展
-
侷限性:
-
1、只能基於Java語言;
-
2、類庫接口學習曲線陡峭;
-
3、原生不支持水平拓展
-
Elasticsearch
Elasticsearch的核心功能:
-
海量數據的分佈式存儲和集羣管理
-
高性能的近實時搜索
-
海量數據的近實時分析
Elasticsearch 有以下特點:
-
支持分佈式,可水平拓展
-
可以被多語言調用,降低全文檢索的學習曲線
-
集羣規模可以從單個節點拓展至數百個節點
-
在服務和數據兩個維度都支持高可用且水平易擴展
-
支持不同的節點類型
-
提供 RESTful API 和 Transport API(官方建議使用Rest API,從Elasticsearch 8.0 版本開始 Transport API將會被移除 )
-
支持jdbc(java 數據庫連接)和odbc(開放數據庫連接)
Elasticsearch大版本更新新特性
5.x 新特性
-
Lucene 6.x
-
默認評分機制從TF-IDF改爲BM25
-
內部引擎級別移除了避免同一文檔併發更新的競爭鎖,性能提升15%-20%
-
Instant aggregation,支持分片上聚合的緩存
-
新增 Painless 腳本引擎
-
新增 Completion Suggested 搜索提示功能
-
新增原生的Java rest客戶端
-
新增Ingest Node,數據預處理節點
-
新增 Profile API 用於查詢優化
6.x 新特性
-
Lucene 7.x
-
新增跨集羣複製(Cross Cluster Replication)
-
新增索引生命週期管理
-
新增Sql支持
-
主要版本之間的升級和遷移更爲簡化
-
全新的基於操作的數據複製框架,加快恢復數據
-
有效存儲稀疏字段的新方法,降低了存儲成本
-
在索引的過程中進行排序,可提高排序的查詢性能
7.x 新特性
-
Lucene 8.0
-
廢除單個索引下多個Type的支持
-
從7.1開始Security免費使用
-
ECK——基於 Kubernetes Operator 模式,擴展了 Kubernetes 的編排功能,支持在 Kubernetes 上設置和管理 Elasticsearch 和 Kibana
-
新的集羣協調管理
-
完整的 High Level Rest API
-
Script Score Query,使用腳本爲返回的文檔提供自定義分數
-
主分片(Primary Shard)默認數從5改爲1
-
更快的Top K
二、Elastic家族其他成員
Elastic Stack生態圈
Logstash
Logstash 是一個開源的服務端數據處理管道,支持從不同的數據來源採集數據、轉換數據,並將數據發送到不同的數據存儲庫中。Logstash 誕生於2009年,它的作者是 Jordan Sisel,最初 Logstash 是用來做日誌採集和處理的,後來隨着不斷改進 Logstash 的功能得到了越來越多的拓展,在2013年 Elasticsearch 收購了 Logstash ,Logstash 也就成爲了 Elastic 家族的一員
Logstash的特點:
-
實時解析和轉換數據
- 對事件字段執行常規轉換,重命名,刪除,替換和修改事件中的字段,例如:從Ip地址解析地理座標、將PII(personally identifiable information 個人驗證信息)數據匿名化,排除敏感字段
-
可拓展
- 200多個插件(日誌,數據庫,Arcsigh,Netflow)
-
可靠性和安全性
-
Logstash 通過持久化隊列來保證至少將運行中的事件送達一次
-
數據傳輸和加密
-
kibana
Kibana是一個爲Elasticsearch設計的開源的數據分析可視化平臺,可用來搜索、查看存儲在Elasticsearch中的數據並與之交互。
Kibana特點:
-
自由地選擇如何呈現自己的數據
-
可以簡單直觀的構建可視化
-
配置簡單、接口靈活,可以更便捷分享數據
-
與Elasticsearch無縫對接,可視化的與Elasticsearch REST API交互
Beats
Beats是開源的輕量級數據採集器,這些採集器作爲安裝在不同服務器上的代理,用於收集日誌或指標,採用Go語言開發。
Beats可以使用多種方式採集數據,主要包括如下:
-
Filebeat:用於收集和傳送日誌文件
-
Packetbeat:捕獲服務器之間的網絡流量,可用於應用程序和性能監視。
-
Metricbeat:收集並報告系統和平臺的各種系統級度量
-
Heartbeat:探測服務以檢查它們是否可訪問
-
Auditbeat:用於審覈Linux服務器上的用戶和進程活動
-
Winlogbeat:專門爲收集Windows事件日誌而設計
-
Functionbeat:爲監視雲環境而設計,收集數據並將其發送到ELK堆棧
X-Pack
X-Pack 是一個 Elastic Stack 的擴展,將安全,警報,監視,報告和圖形功能包含在一個易於安裝的軟件包中。使用X-pack通過Kibana可以實時查看集羣的健康和性能,以及分析過去的集羣、索引和節點度量,還可以監視Kibana本身性能。6.3之前 X-Pack 以插件方式安裝,在 X-Pack 開源後,提供了兩個版本:白金版和黃金版,部分 X-Pack 功能免費使用,從6.8和7.1開始 Security 功能免費使用
三、Elasticsearch發展
-
2004年Shay Banon基於Lucene開發Compass
-
2010年Shay Banon重寫Compass,取名字爲ElasticSearch
-
2010年2月第一次發佈0.4版本
-
2012年Elasticsearch商業公司成立
-
2014年1月發佈1.0版本
-
2014年10月發佈2.0版本
-
2015年3月,Elasticsearch 收購 Elastic Cloud,開始提供 Cloud 服務。
-
2015年3月,收購PacketBeat
-
2016年9月,收購PreAlert-Machine Learning異常檢測
-
2016年10月,Elasticsearch發佈5.0版本
-
2017年6月,收購Opbeat進軍APM
-
2017年10月,Elasticsearch 發佈6.0版本
-
2017年11月,收購Saas廠商Swiftype,提供網站和App搜索
-
2018年X-pack開源
-
2019年4月Elasticsearch發佈7.0版本
文章歡迎轉載,轉載請註明出處,個人公衆號【愛做夢的錘子】,全網同id,個站 http://te-amo.site,歡迎關注,裏面會分享更多有用知識,還有我的私密照片