- Elasticsearch 教程
- Elasticsearch - 首頁
- Elasticsearch 基礎概念
- Elasticsearch - 安裝
- Elasticsearch - 資料填充
- 版本遷移
- Elasticsearch - API 約定
- Elasticsearch - 文件 API
- Elasticsearch - 搜尋 API
- Elasticsearch - 聚合
- Elasticsearch - 索引 API
- Elasticsearch - CAT API
- Elasticsearch - 叢集 API
- Elasticsearch - 查詢 DSL
- Elasticsearch - 對映
- Elasticsearch - 分析
- Elasticsearch - 模組
- Elasticsearch - 索引模組
- Elasticsearch - Ingest 節點
- Elasticsearch - 索引生命週期管理
- Elasticsearch - SQL 訪問
- Elasticsearch - 監控
- Elasticsearch - 資料彙總
- Elasticsearch - 凍結索引
- Elasticsearch - 測試
- Elasticsearch - Kibana 儀表盤
- Elasticsearch - 按欄位過濾
- Elasticsearch - 資料表格
- Elasticsearch - 地區地圖
- Elasticsearch - 餅圖
- Elasticsearch - 面積圖和條形圖
- Elasticsearch - 時間序列
- Elasticsearch - 詞雲
- Elasticsearch - 熱力圖
- Elasticsearch - Canvas
- Elasticsearch - 日誌 UI
- Elasticsearch 有用資源
- Elasticsearch - 快速指南
- Elasticsearch - 有用資源
- Elasticsearch - 討論
Elasticsearch 基礎概念
Elasticsearch 是一個基於 Apache Lucene 的搜尋伺服器。它由 Shay Banon 開發,並於 2010 年釋出。現在由 Elasticsearch BV 維護。其最新版本為 7.0.0。
Elasticsearch 是一個即時分散式且開源的全文搜尋和分析引擎。它可以透過 RESTful 網路服務介面訪問,並使用無模式 JSON(JavaScript 物件表示法)文件來儲存資料。它基於 Java 程式語言構建,因此 Elasticsearch 可以在不同的平臺上執行。它使使用者能夠以非常高的速度探索海量資料。
一般特性
Elasticsearch 的一般特性如下:
Elasticsearch 可擴充套件到 PB 級的結構化和非結構化資料。
Elasticsearch 可用作 MongoDB 和 RavenDB 等文件儲存的替代品。
Elasticsearch 使用反規範化來提高搜尋效能。
Elasticsearch 是流行的企業搜尋引擎之一,目前已被許多大型組織使用,例如維基百科、衛報、StackOverflow、GitHub 等。
Elasticsearch 是開源的,並根據 Apache 許可證 2.0 版提供。
關鍵概念
Elasticsearch 的關鍵概念如下:
節點 (Node)
它指的是 Elasticsearch 的單個執行例項。單個物理和虛擬伺服器根據其物理資源(如 RAM、儲存和處理能力)容納多個節點。
叢集 (Cluster)
它是⼀個或多個節點的集合。叢集為所有節點提供跨所有資料的集體索引和搜尋功能。
索引 (Index)
它是不同型別文件及其屬性的集合。索引還使用分片的概念來提高效能。例如,⼀組文件包含社交網路應用程式的資料。
文件 (Document)
它是以 JSON 格式定義的特定方式排列的欄位的集合。每個文件都屬於⼀種類型,並駐留在索引內。每個文件都與⼀個稱為 UID 的唯一識別符號關聯。
分片 (Shard)
索引被水平細分為分片。這意味著每個分片包含文件的所有屬性,但包含的 JSON 物件數量少於索引。水平分離使分片成為獨立的節點,可以儲存在任何節點中。主分片是索引的原始水平部分,然後將這些主分片複製到副本分片。
副本 (Replicas)
Elasticsearch 允許使用者建立其索引和分片的副本。複製不僅有助於在發生故障時提高資料的可用性,而且還透過在這些副本中執行並行搜尋操作來提高搜尋效能。
優勢
Elasticsearch 是基於 Java 開發的,使其幾乎相容所有平臺。
Elasticsearch 是即時的,換句話說,新增的文件一秒鐘後即可在這個引擎中搜索到。
Elasticsearch 是分散式的,這使得它易於擴充套件和整合到任何大型組織中。
使用 Elasticsearch 中存在的閘道器概念,可以輕鬆建立完整的備份。
與 Apache Solr 相比,Elasticsearch 更容易處理多租戶。
Elasticsearch 使用 JSON 物件作為響應,這使得可以使用大量不同的程式語言來呼叫 Elasticsearch 伺服器。
Elasticsearch 支援幾乎所有文件型別,除了不支援文字渲染的那些型別。
劣勢
Elasticsearch 不像 Apache Solr 那樣支援多語言(僅限於 JSON 格式),在處理請求和響應資料方面不支援多語言(僅限於 JSON 格式),而 Apache Solr 支援 CSV、XML 和 JSON 格式。
有時,Elasticsearch 會出現腦裂的情況。
Elasticsearch 和 RDBMS 的比較
在 Elasticsearch 中,索引類似於 RDBMS(關係資料庫管理系統)中的表。每個表都是行的集合,就像每個索引都是 Elasticsearch 中文件的集合一樣。
下表對這些術語進行了直接比較:
| Elasticsearch | RDBMS |
|---|---|
| 叢集 (Cluster) | 資料庫 |
| 分片 (Shard) | 分片 (Shard) |
| 索引 (Index) | 表 |
| 欄位 | 列 |
| 文件 (Document) | 行 |