ElasticSearch 架構圖
從下往上來分析ElasticSearch 架構圖
Gateway代表ElasticSearch索引的持久化存儲方式。
在Gateway中,ElasticSearch默認先把索引存儲在內存中,然后當內存滿的時候,再持久化到Gateway里。當ES集群關閉或重啟的時候,它就會從Gateway里去讀取索引數據。比如LocalFileSystem和HDFS、AS3等。
DistributedLucene Directory,它是Lucene里的一些列索引文件組成的目錄。它負責管理這些索引文件。包括數據的讀取、寫入,以及索引的添加和合並等。
River,代表是數據源。是以插件的形式存在於ElasticSearch中。
Mapping,映射的意思,非常類似於靜態語言中的數據類型。比如我們聲明一個int類型的變量,那以后這個變量只能存儲int類型的數據。
比如我們聲明一個double類型的mapping字段,則只能存儲double類型的數據。
Mapping不僅是告訴ElasticSearch,哪個字段是哪種類型。還能告訴ElasticSearch如何來索引數據,以及數據是否被索引到等。
Search Moudle,這個很簡單
Index Moudle,這個很簡單
Disvcovery,主要是負責集群的master節點發現。比如某個節點突然離開或進來的情況,進行一個分片重新分片等。這里有個發現機制。
發現機制默認的實現方式是單播和多播的形式,即Zen,同時也支持點對點的實現。另外一種是以插件的形式,即EC2。
Scripting,即腳本語言。包括很多,這里不多贅述。如mvel、js、python等。
Transport,代表ElasticSearch內部節點,代表跟集群的客戶端交互。包括 Thrift、Memcached、Http等協議
RESTful Style API,通過RESTful方式來實現API編程。
3rd plugins,代表第三方插件。
Java(Netty),是開發框架。
JMX,是監控。