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 。
-
采用RollingFile類型的Appender
-
把日志寫到
/var/log/elasticsearch/production.log
-
歸檔后的日志文件的文件名格式,其中"%d{yyyy-MM-dd-HH}"用來自動填充日期
-
基於時間進行日志的切割
-
切割的間隔為1小時, 即每小時進行一次日志的歸檔
-
修正時間范圍, 從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