Elasticsearch自己就擁有良好的默認配置,因此須要配置的東西比較少。使用Cluster Update Settings API,能夠修改正在運行中的集羣的某些設置。html
配置文件應該包含特定節點的設置,好比node.name 和 paths,或者爲了讓節點可以加入某個集羣作一些設置,好比 cluster.name 和 network.host 。java
Elasticsearch有兩個配置文件:node
這些文件位於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
),能夠在配置文件中引用,以肯定日誌文件的位置。
例如,若是您的日誌目錄(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小時)
若是在 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