Elasticsearch配置

Elasticsearch自己就擁有良好的默認配置,因此須要配置的東西比較少。使用Cluster Update Settings API,能夠修改正在運行中的集羣的某些設置。html

配置文件應該包含特定節點的設置,好比node.name 和 paths,或者爲了讓節點可以加入某個集羣作一些設置,好比 cluster.name  和  network.host 。java

配置文件位置

Elasticsearch有兩個配置文件:node

  • elasticsearch.yml 用於配置elasticsearch
  • log4j2.properties 用於配置elasticsearch的日誌。

這些文件位於config目錄中,默認位置是 $ES_HOME/config/ 。Debian和RPM軟件包將config目錄位置設置爲 /etc/elasticsearch/ 。
config目錄位置能夠經過path.conf設置更改,以下所示:git

./bin/elasticsearch -Epath.conf=/path/to/my/config/

下面咱們來實際操做一下,如下是我使用的命令是:github

D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch/config

步驟以下:apache

一、把bin目錄下的config目錄拷貝到D盤下的ElasticSearch下(具體看你想放在什麼地方)瀏覽器

二、爲了查看咱們的操做是否生效,修改elasticsearch.yml中的集羣名稱app

三、在命令提示符中輸入 D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch/config ,(若是輸入以前elasticsearch已啓動,建議關掉,不然可能不會成功)。elasticsearch

四、執行完成,到瀏覽器中輸入 http://localhost:9200/ ,若是返回結果中包含 "cluster_name" : "my-application", 說明修改配置文件路徑成功了。ide

 配置文件格式

配置格式爲YAML如下是更改數據和日誌目錄的示例:

path:
    data: /var/lib/elasticsearch
    logs: /var/log/elasticsearch

也能夠像下面這樣設置:

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

下面咱們來實際操做一下:(data和log文件夾不須要提早建立好):

一、配置elasticsearch.yml

 二、爲了查看是否生效,咱們用 D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch/config 從新啓動一下Elasticsearch,而後經過kibana添加一條數據。

PUT /customer/external/1?pretty
{
  "name": "John Doe"
}

三、接着看看data和log文件夾下是否有內容。如下是個人log和data。

環境變量替換

在配置文件中,能夠經過  ${...}  符號引用環境變量,例如:

node.name:    ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}

提示輸入配置

 對於一些設置,可能不想存儲在配置文件中,可使用 ${prompt.text}  或者 ${prompt.secret} ,此種方式不能再後臺啓動(好比使用服務運行或在後臺運行),在啓動elasticsearch的時候,會提示你輸入。 ${prompt.secret} 不會把你輸入的內容顯示到終端上, ${prompt.text} 則能夠。好比:

node:
  name: ${prompt.text}

當啓動elasticsearch的時候,終端就會提示輸入配置值:

Enter value for [node.name]:

下面咱們來實際操做一下:

一、配置elasticsearch.yml

二、重啓ES並鍵入my-node,

D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch
/config
Enter value for [node.name]: my-node

 三、查看效果,節點名稱已變爲my-node。

{
  "name": "my-node",
  "cluster_name": "my-application",
  "cluster_uuid": "D6llECslTvm-P1EXbADXxw",
  "version": {
    "number": "5.4.1",
    "build_hash": "2cfe0df",
    "build_date": "2017-05-29T16:05:51.443Z",
    "build_snapshot": false,
    "lucene_version": "6.5.1"
  },
  "tagline": "You Know, for Search"
}

Elasticsearch使用Log4j2進行日誌記錄。可使用 log4j2.properties 文件配置log4j2。Elasticsearch公開三個屬性 ${sys:es.logs.base_path} ,${sys:es.logs.cluster_name} 以及 ${sys:es.logs.node_name} (若是明確設置node.name),能夠在配置文件中引用,以肯定日誌文件的位置。

  • ${sys:es.logs.base_path} 將解析爲日誌目錄;
  • ${sys:es.logs.cluster_name} 將解析爲羣集名稱(默認配置中,用做日誌文件名的前綴);
  • ${sys:es.logs.node_name} 將解析爲節點名稱(若是節點名稱已顯式設置)。

例如,若是您的日誌目錄(path.logs)是 /var/log/elasticsearch ,您的羣集被命名 production;

那麼 ${sys:es.logs.base_path} 將解析到 /var/log/elasticsearch ;

${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log 將被解析到 /var/log/elasticsearch/production.log 。

  1. 採用RollingFile類型的Appender

  2. 把日誌寫到/var/log/elasticsearch/production.log

  3. 歸檔後的日誌文件的文件名格式,其中"%d{yyyy-MM-dd-HH}"用來自動填充日期

  4. 基於時間進行日誌的切割

  5. 切割的間隔爲1小時, 即每小時進行一第二天志的歸檔

  6. 修正時間範圍, 從0時開始計數,日誌輪換是以天做爲分界(而不是相隔24小時)

 Log4j的配置解析會被無關的空格干擾; 若是您在此頁面上覆制並粘貼任何Log4j設置,或者輸入任何的Log4j配置,請確保去掉前導和尾隨空格。

若是在 appender.rolling.filePattern 中追加.gz或者.zip後綴,那麼當日志輪換的時候,舊的日誌將會被壓縮處理。

若是要在特定時間段內保留日誌文件,則可使用帶有刪除操做的滾動策略。

 

一、配置 DefaultRolloverStrategy

二、配置 delete action處理回滾

三、刪除哪一個目錄下的日誌歸檔文件

四、回滾處理時適用的條件

五、保留日誌七天

六、只刪除超過7天的文件,若是它們與指定的glob匹配

七、從基路徑刪除和glob  ${sys:es.logs.cluster_name}-* 匹配的文件,這是日誌文件滾動到的glob;只會刪除滾動的Elasticsearch日誌,而不會刪除棄用和緩慢的日誌。感受有點不通,把原文貼出來。

    
Delete files from the base path matching the glob ${sys:es.logs.cluster_name}-*; this is the glob that log files are rolled to; this is needed to only delete the rolled Elasticsearch logs but not also delete the deprecation and slow logs

能夠加載多個配置文件(在這種狀況下,它們將會被合併),只要它們被命名 log4j2.properties 並存放在Elasticsearch config目錄下(只要它的祖先是此目錄就行); 這對於插件記錄日誌頗有用。

 logger  部分包含java包及其對應的日誌級別。 appender 部分包含日誌的儲存位置。在Log4j documentation中能夠找到有關如何自定義日誌記錄和 appender 的相關信息

棄用日誌

除了常規日誌記錄功能以外,Elasticsearch還容許您啓用對已棄用的日誌記錄。例如,若是未來須要遷移某些功能,則能夠提早肯定。默認狀況下,在WARN級別(在此級別,全部棄用日誌消息都會被輸出)啓用棄用日誌記錄。

logger.deprecation.level = warn

這將在您的日誌目錄中建立每日滾動棄用日誌文件。按期檢查這個文件,特別是當你打算升級到一個新的主要版本。

默認日誌記錄配置已將棄用日誌的滾動策略設置爲1 GB後滾動和壓縮,並保留最多五個日誌文件(4個輪換日誌,一個在用的日誌)。經過在 config/log4j2.properties 文件中將棄用日誌級別設置爲error,就能夠禁用它。

官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html

參考文檔:https://github.com/13428282016/elasticsearch-CN/wiki/es-setup--elasticsearch

相關文章
相關標籤/搜索