Elasticsearchの設定
Elasticsearchは良好なデフォルト設定を持ち、非常に少ない構成で動作します。ほとんどの設定は、クラスタ更新設定 APIを使用して、稼働中のクラスタで変更できます。
構成ファイルには、ノード固有の設定(node.name
やパスなど)や、クラスタに参加するためにノードが必要とする設定(cluster.name
やnetwork.host
など)が含まれている必要があります。
設定ファイルの場所
Elasticsearchには3つの設定ファイルがあります:
elasticsearch.yml
Elasticsearchの設定用jvm.options
Elasticsearch JVM設定用log4j2.properties
Elasticsearchのログ設定用
これらのファイルはconfigディレクトリにあり、そのデフォルトの場所は、インストールがアーカイブ配布(tar.gz
またはzip
)からか、パッケージ配布(DebianまたはRPMパッケージ)からかによって異なります。
アーカイブ配布の場合、configディレクトリの場所は$ES_HOME/config
にデフォルト設定されています。configディレクトリの場所は、次のようにES_PATH_CONF
環境変数を介して変更できます:
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch
または、コマンドラインまたはシェルプロファイルを介してexport
環境変数を設定することもできます。
パッケージ配布の場合、configディレクトリの場所は/etc/elasticsearch
にデフォルト設定されています。configディレクトリの場所もES_PATH_CONF
環境変数を介して変更できますが、シェルでこれを設定するだけでは不十分です。代わりに、この変数は/etc/default/elasticsearch
(Debianパッケージ用)および/etc/sysconfig/elasticsearch
(RPMパッケージ用)から取得されます。これらのファイルのいずれかでES_PATH_CONF=/etc/elasticsearch
エントリを適切に編集して、configディレクトリの場所を変更する必要があります。
設定ファイルの形式
YAML形式です。データおよびログディレクトリのパスを変更する例を以下に示します:
Yaml
path:
data: /var/lib/elasticsearch
logs: /var/log/elasticsearch
設定は次のようにフラット化することもできます:
Yaml
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
YAMLでは、非スカラー値をシーケンスとしてフォーマットできます:
Yaml
discovery.seed_hosts:
- 192.168.1.10:9300
- 192.168.1.11
- seeds.mydomain.com
あまり一般的ではありませんが、非スカラー値を配列としてフォーマットすることもできます:
Yaml
discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11", "seeds.mydomain.com"]
環境変数の置換
設定ファイル内で${...}
表記を使用して参照された環境変数は、環境変数の値に置き換えられます。例えば:
Yaml
node.name: ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}
環境変数の値は単純な文字列でなければなりません。カンマ区切りの文字列を使用して、Elasticsearchがリストとして解析する値を提供します。例えば、Elasticsearchは次の文字列を${HOSTNAME}
環境変数の値のリストに分割します:
Yaml
export HOSTNAME="host1,host2"
クラスタとノードの設定タイプ
クラスタとノードの設定は、設定方法に基づいて分類できます:
- 動的
稼働中のクラスタでクラスタ更新設定APIを使用して動的設定を構成および更新できます。また、
elasticsearch.yml
を使用して、起動していないまたはシャットダウンされたノードでローカルに動的設定を構成することもできます。
クラスタ更新設定APIを使用して行われた更新は、クラスタの再起動を跨いで適用される永続的なものか、クラスタの再起動後にリセットされる一時的なものです。また、APIを使用してnull
値を割り当てることで、一時的または永続的な設定をリセットすることもできます。
同じ設定を複数の方法で構成した場合、Elasticsearchは次の優先順位で設定を適用します:
hebin-ul-start- 一時的設定
- 永続的設定
elasticsearch.yml
設定- デフォルト設定値
例えば、一時的設定を適用して永続的設定やelasticsearch.yml
設定を上書きすることができます。ただし、elasticsearch.yml
設定の変更は、定義された一時的または永続的な設定を上書きすることはありません。
Elasticsearch Serviceを使用している場合は、ユーザー設定機能を使用してすべてのクラスタ設定を構成します。この方法では、Elasticsearch Serviceがクラスタを壊す可能性のある安全でない設定を自動的に拒否します。
自分のハードウェアでElasticsearchを実行している場合は、クラスタ更新設定APIを使用して動的クラスタ設定を構成します。静的クラスタ設定およびノード設定にはelasticsearch.yml
のみを使用してください。APIは再起動を必要とせず、すべてのノードで設定の値が同じであることを保証します。
もはや一時的クラスタ設定の使用を推奨しません。代わりに永続的クラスタ設定を使用してください。クラスタが不安定になると、一時的設定が予期せずクリアされ、望ましくないクラスタ構成になる可能性があります。一時的設定の移行ガイドを参照してください。
hebin-ul-end
- 静的
- 静的設定は、
elasticsearch.yml
を使用して起動していないまたはシャットダウンされたノードでのみ構成できます。
静的設定は、クラスタ内のすべての関連ノードで設定する必要があります。