Elasticsearch配置


Elasticsearch本身就擁有良好的默認配置,所以需要配置的東西比較少。使用Cluster Update Settings API,可以修改正在運行中的集群的某些設置。

配置文件應該包含特定節點的設置,比如node.name 和 paths,或者為了讓節點能夠加入某個集群做一些設置,比如 cluster.name  和  network.host 。

配置文件位置

Elasticsearch有兩個配置文件:

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

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

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

下面我們來實際操作一下,以下是我使用的命令是:

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

步驟如下:

1、把bin目錄下的config目錄拷貝到D盤下的ElasticSearch下(具體看你想放在什么地方)

2、為了查看我們的操作是否生效,修改elasticsearch.yml中的集群名稱

3、在命令提示符中輸入 D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch/config ,(如果輸入之前elasticsearch已啟動,建議關掉,否則可能不會成功)。

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

 配置文件格式

配置格式為YAML以下是更改數據和日志目錄的示例:

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

也可以像下面這樣設置:

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

下面我們來實際操作一下:(data和log文件夾不需要提前創建好):

1、配置elasticsearch.yml

 2、為了查看是否生效,我們用 D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch/config 重新啟動一下Elasticsearch,然后通過kibana添加一條數據。

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

3、接着看看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]:

下面我們來實際操作一下:

1、配置elasticsearch.yml

2、重啟ES並鍵入my-node,

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

 3、查看效果,節點名稱已變為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后綴,那么當日志輪換的時候,舊的日志將會被壓縮處理。

如果要在特定時間段內保留日志文件,則可以使用帶有刪除操作的滾動策略。

 

1、配置 DefaultRolloverStrategy

2、配置 delete action處理回滾

3、刪除哪個目錄下的日志歸檔文件

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

5、保留日志七天

6、只刪除超過7天的文件,如果它們與指定的glob匹配

7、從基路徑刪除和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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM