Elasticsearch提供良好的默認設置,并且只需要很少的配置。可以使用群集更新設置API在正在運行的群集上更改大多數設置。
配置文件應包含特定于節點的設置(如node.name和paths),或節點為了能夠加入集群而需要的設置,如cluster.name和network.host。
一、配置文件位置
Elasticsearch有三個配置文件:
- 用于配置elasticsearch.yml
- 用于配置Elasticsearch jvm設置的jvm.options
- log4j2.用于配置Elasticsearch日志記錄的屬性
這些文件位于config目錄中,其默認位置取決于安裝是來自存檔發行版(tar.gz或zip)還是包發行版(Debian或RPM包)。
對于archive?版,配置目錄位置默認為$ES_HOME/config。可以通過ES_PATH_CONF環境變量更改配置目錄的位置,如下所示:
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch
或者,可以通過命令行或shell配置文件導出ES_PATH_CONF環境變量。
對于package?版,配置目錄位置默認為/etc/elasticsearch。配置目錄的位置也可以通過ES_PATH_CONF環境變量進行更改,但請注意,僅在shell中設置該位置是不夠的。相反,這個變量來源于/etc/default/elasticsearch(用于Debian包)和/etc/sysconfig/elasticsearch(用于RPM包)。您需要相應地編輯其中一個文件中的ES_PATH_CONF=/etc/elasticsearch條目,以更改配置目錄的位置。
二、配置文件格式
配置格式為YAML。下面是更改數據和日志目錄路徑的示例:
path:data: /var/lib/elasticsearchlogs: /var/log/elasticsearch
還可以按如下方式展平設置:
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
在YAML中,可以將非標量值格式化為序列:
discovery.seed_hosts:- 192.168.1.10:9300- 192.168.1.11- seeds.mydomain.com
盡管不太常見,但您也可以將非標量值格式化為數組:
discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11", "seeds.mydomain.com"]
三、環境變量替換
配置文件中使用${…}符號引用的環境變量將替換為環境變量的值。例如:
node.name: ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}
環境變量的值必須是簡單字符串。使用逗號分隔的字符串來提供Elasticsearch將解析為列表的值。例如,Elasticsearch將以下字符串拆分為${HOSTNAME}環境變量的值列表:
export HOSTNAME="host1,host2"
四、集群和節點設置類型
可以根據配置方式對群集和節點設置進行分類:
Dynamic
您可以使用集群更新設置API在正在運行的集群上配置和更新動態設置。您還可以使用彈性搜索.yml在未啟動或關閉的節點上本地配置動態設置。
使用集群更新設置API進行的更新可以是持久的,適用于集群重新啟動,也可以是暫時的,在集群重新啟動后重置。您還可以通過使用API為臨時或持久設置分配空值來重置它們。
如果使用多個方法配置相同的設置,則Elasticsearch將按以下優先順序應用設置:
- Transient setting
- Persistent setting
elasticsearch.yml
?setting- Default setting value
例如,可以應用瞬態設置來覆蓋持久設置或elasticsearch.yml設置。然而,對elasticsearch.yml設置的更改不會覆蓋定義的瞬態或持久設置。