上節,我們學習到了如何從源碼啓動 elasticsearch,從現在開始我們來深入閱讀源碼
本節來簡單看一下 es 是如何加載配置的。
一,ignorePrefixes
跟蹤了代碼,發現settings 來源於 org.elasticsearch.node.internal.InternalSettingsPreparer
,首先定義了一個忽略的配置前綴 String[] ignorePrefixes = new String[]{"es.default.", "elasticsearch.default."};
,推測是爲了防止重複配置,儘可能使用項目內的配置項,而忽略系統的配置項。
二,useSystemProperties
定義了 useSystemProperties
是否使用系統配置,啓動項目時,傳入的配置爲空,也就是說此值爲 true ,也即使用系統配置裏面前綴爲 elasticsearch.default.
,elasticsearch.
,es.default.
,es.
的配置項。
三,loadConfigSettings
構造方法裏面,傳入了這個選項,是否加載配置文件。首次啓動時,當然是加載啦!根據 useSystemProperties 判斷是否加載系統內部的配置選項,同時會設置 loadFromEnv
,如果系統已經有配置,則 loadFromEnv 爲 false ,即,不從配置文件加載。否則會從 elasticsearch.yml,elasticsearch.json, elasticsearch.properties 這三個文件中依次加載
四,force
去除 force. 開頭的配置的前綴
五,name.txt
從此文件中,加載一個名字,具體用途,還不清楚。先佔坑
六,cluster name
配置默認的 cluster name
,如果在配置文件中已經存在,則不使用默認配置
七,添加日誌目錄