ElasticSearch之es概述及簡單配置(類似前言,用處不大)

ES的起源

1999年一個名爲Lucene的開源項目誕生,lucene是一個用java寫成的檢索工程庫,2005年成爲apache的頂級項目,對full-text檢索非常高效,但是難於應用,難於配置,難以擴展制約了lucene發展。基於此2004年Shay Banon開發了一個名爲Compass的基於lucene的產品,目標是讓搜索更簡單的應用於java程序的同時更易於擴展性的需求。2010年Shay全部重寫了Compass形成了我們現在常用的分佈式搜索引擎Elasticsearch。

Elasticsearch是分佈式、可擴展、實時的搜索與數據分析引擎,每個節點都是es的一個實例,集羣就是一組es節點的集合,集羣可以根據需求和配置動態的增長。

es應用簡單的 REST APIs通過http的方式訪問集羣(允許客戶端應用以多種不同語言編寫)。我畫了一個醜爆了的下圖

現在Elastic家族已經發展出了以elasticsearch爲核心的多種套件,es5.0以前是elk,es5.0後加入了Beats ,與原來的elk組合成elastic stack,功能更加強大。

es7.0以後將openJDK捆綁在了es安裝包內。(估計是因爲oracle開始收費了,所以用的openjdk)

ES相關文件夾

在es的安裝目錄下一共有8個文件夾(7.0以下版本爲7個文件夾沒有jdk)

bin:此文件夾中包含用於啓動es的二進制腳本及安裝插件的插件

config:配置文件的存放目錄,核心配置文件爲elasticsearch.yml

data:存放節點上的所有索引、分片的數據

jdk(7.0以下版本沒有)

lib:存放elasticsearch需要的jar包

logs:日誌文件存放位置

modules:es的可拆分模塊被拆分出來放在這裏面(個人理解應該是爲了模塊化可插拔的開發,java9支持模塊化開發了)

plugins:插件文件位置。每個插件都包含在一個子目錄中(比如:head插件,就位於/plugins/head文件夾下。)

ES核心配置文件

elasticsearch.yml

默認情況下所有註釋都是被註釋掉的,需要根據需求自己放開

jvm.options:jvm的配置信息

僅由空格組成的行被忽略,#開頭的行爲註釋也被忽略

以-開頭的行爲所有版本的jvm都必須遵循的準則,例如以下配置表示:表示無論java幾,分給jvm的最大內存是2g

- Xmx2g

以數字開頭表示只有jvm版本與數字匹配時該配置才適用,例如以下配置表示:只有java8可用

8 :-Xmx2g

以數字-開頭表示僅在JVM版本大於或等於該數字時才適用,例如以下配置表示:java8以上版本分配給jvm的最大內存是2g

8- :-Xmx2g

以數字-數字開頭表示僅當JVM版本在兩個數字範圍內時才適用,例如以下配置表示:java8,java9分配給jvm的最大內存是2g

8 - 9 : - Xmx2g

-Xms最小佔用內存 -Xmx最大佔用內存

   

log4j2.properties:log打印的配置

日誌級別默認爲error:status=error

啓動ES

在安裝文件夾下bin目錄下有啓動的二進制文件

elasticsearch是linux和mac的啓動腳本,進入安裝目錄下,執行如下命令在linux/mac下啓動elasticsearch

./bin/elasticsearch[ -d -p 文件名]

-d:es作爲守護進程一直在後臺運行,-p:保存進程id到指定文件夾,這兩個關鍵字也可以不加、

elasticsearch.bit是windows的啓動批處理腳本,雙擊可以直接啓動

Node節點

每一個節點都是elasticsearch的一個實例即一個運行在jvm內的進程

通常來說一個節點對應一個host(一般生產環境下爲了提高效率會一個物理機佈一個節點)。

每個節點又一個唯一id(uuid)

每個節點都有一個名稱(默認爲hostname)

本地測試的時候可以在elasticsearch.yml文件夾下設置node.name,也可以用命令:

$ ./bin/elasticsearch -E node.name=nodename

來設置node.name

Cluster集羣

每個節點都屬於一個集羣

一個集羣是由一個或多個以分佈式方式協同工作的節點組成的。

集羣名稱(cluster.name)默認爲elasticsearch,docker鏡像上的集羣名稱默認爲docker-cluster,集羣名稱最好設置爲有意義且唯一併且能標識公司或者功能的名稱。

集羣名稱可以通過elasticsearch.yml的cluster.name進行配置,或通過命令行設置

./bin/elasticsearch -E cluster.name=你的集羣名稱

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章