筆記:Elasticsearch基本概念
Lucene是一個由Java語言開發的開源全文檢索引擎工具包。把Lucene用Netty封裝成服務,使用JSON訪問就是Elasticsearch。
Elasticsearch內建了對分散式叢集和分散式索引的管理,所以相對Solr來說,不需要額外安裝ZooKeeper,其更容易分散式部署。使用Elasticsearch的搜尋系統整體架構如下圖所示:
Elasticsearch的每一個執行例項稱為一個節點,既可以在同一臺計算機上執行多個例項,也可以在每臺計算機上只執行一個例項。
在一個分散式系統裡,多個Elasticsearch執行例項可以組成一個叢集(cluster),該叢集裡有一個動態選舉出來的主節點(master)。如果主節點失敗,會自動選出新的節點作為主節點,所以不存在單點故障。
在同一個子網中,只需要在每個節點上設定相同的叢集名,這些叢集名相同的節點會自動組成一個叢集。Elasticsearch包含了節點和節點之間通訊模組及節點之間的資料分配和平衡模組。
為了實現容錯,Elasticsearch會把查詢文件集合分解為多個小的索引,每一個小的索引就叫做分片(shards)。每一個分片都可以有0到多個副本(replicas),而每一個副本也都是分片的完整複製品,這樣也提高了查詢速度。
一旦Elasticsearch的某個節點資料損壞或服務不可用的時候,就可以用其他節點來代替壞掉的節點,以達到高可用的目的。當有節點加入或退出時,主節點會根據機器的負載對索引分片進行重新分配,當“掛掉”的節點再次重新啟動的時候也會進行資料恢復(recovery)。
Elasticsearch通過閘道器(Gateway)來管理叢集恢復,可以配置叢集需要加入多個節點才能啟動恢復資料。閘道器配置用於恢復任何失敗的索引。當節點奔潰並重新啟動時,Elasticsearch將從閘道器讀取所有的索引和後設資料。
Transport代表Elasticsearch內部的節點或者叢集與客戶端之間的互動方式,預設使用TCP協議進行互動,同事支援HTTP協議(JSON格式)、thrift、Servlet、Memcached、ZeroMQ等多種的傳輸協議(通過外掛方式整合)。
為了讓叢集在執行時動態附加額外的功能,可以使用外掛機制載入實現公共介面的程式集。Elasticsearch外掛用於各種特定的方式擴充套件基本的Elasticsearch功能。
- Elasticsearch的優點
- 橫向可擴充套件性:只需要增加一臺伺服器,做一點配置,啟動一下Elasticsearch程式就可以併入叢集
- 分片機制提供更好的分佈性:同一個索引分成多個分片(sharding),這點類似於HDFS的塊機智;分而治之的方式可提升處理效率
- 高可用:提供複製(replica)機制,一個分片可以設定多個複製,使得某臺伺服器在當機的情況下,叢集仍舊可以照常執行,並會把伺服器當機丟失的資料資訊複製恢復到其他可用節點上
- 使用簡單:只需一條命令就可以下載檔案,然後很快就能搭建一個站內搜尋引擎。
- 全文搜尋
是指計算機搜尋程式通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現的次數和位置,當使用者查詢時,搜尋程式就根據事先建立的索引進行查詢,並將查詢的結果反饋給使用者。這個過程類似於通過字典中的搜尋字表查字的過程。Lucene是目前全球使用最廣的全文搜尋引擎開源庫。
相關文章
- ElasticSearch 學習筆記(一) 基本概念與基本使用Elasticsearch筆記
- ES 筆記三:基本概念筆記
- 筆記:瞭解Elasticsearch筆記Elasticsearch
- elasticsearch-head 筆記Elasticsearch筆記
- Elasticsearch7.1 筆記Elasticsearch筆記
- ElasticSearch詳細筆記Elasticsearch筆記
- Elasticsearch學習筆記Elasticsearch筆記
- RabbitMQ和Elasticsearch的使用筆記MQElasticsearch筆記
- Elasticsearch的配置學習筆記Elasticsearch筆記
- HTTP2基本概念學習筆記HTTP筆記
- H.264學習筆記——基本概念筆記
- ZooKeeper筆記(1):ZooKeeper特性與基本概念筆記
- 【kafka學習筆記】kafka的基本概念Kafka筆記
- Elasticsearch的基本概念和指標Elasticsearch指標
- elasticsearch學習筆記一:核心概念Elasticsearch筆記
- 筆記三:基本概念-文件、索引和 REST API筆記索引RESTAPI
- Docker 學習筆記-基本概念與安裝Docker筆記
- 資料結構筆記——樹的基本概念資料結構筆記
- Shiro學習筆記(一) 基本概念與使用筆記
- 程式設計師筆記——Spring基本概念速覽程式設計師筆記Spring
- TensorFlow筆記(1)——TensorFlow中的相關基本概念筆記
- C++學習筆記-五大基本概念C++筆記
- ElasticSearch裡面一些小坑筆記Elasticsearch筆記
- Elasticsearch入門學習重點筆記Elasticsearch筆記
- Redis學習筆記(01-基本概念及安裝)Redis筆記
- 2.4.1 死鎖的基本概念——作業系統筆記作業系統筆記
- Zookeeper學習筆記(一)基本概念和簡單使用筆記
- python 學習筆記第四章:基本概念Python筆記
- Dubbo學習筆記(一)基本概念與簡單使用筆記
- SpringBoot整合ElasticSearch 入門demo學習筆記Spring BootElasticsearch筆記
- elasticsearch 學習筆記之二 常見介面Elasticsearch筆記
- PHP 手冊 (類與物件) 學習筆記一:基本概念PHP物件筆記
- (C++11/14/17學習筆記):併發基本概念及實現,程式、執行緒基本概念C++筆記執行緒
- ElasticSearch學習筆記(二)——對聚合的簡單理解Elasticsearch筆記
- ES 筆記四十六:Elasticsearch 資料建模例項筆記Elasticsearch
- elasticsearch學習筆記二:相關軟體安裝Elasticsearch筆記
- 機器學習框架ML.NET學習筆記【1】基本概念機器學習框架筆記
- 讀書筆記:從Lucene到Elasticsearch:全文檢索實戰筆記Elasticsearch