Elasticsearchの設定

Elasticsearchは良好なデフォルト設定を持ち、非常に少ない構成で動作します。ほとんどの設定は、クラスタ更新設定 APIを使用して、稼働中のクラスタで変更できます。

構成ファイルには、ノード固有の設定(node.nameやパスなど)や、クラスタに参加するためにノードが必要とする設定(cluster.namenetwork.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環境変数を介して変更できます:

  1. 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

  1. path:
  2. data: /var/lib/elasticsearch
  3. logs: /var/log/elasticsearch

設定は次のようにフラット化することもできます:

Yaml

  1. path.data: /var/lib/elasticsearch
  2. path.logs: /var/log/elasticsearch

YAMLでは、非スカラー値をシーケンスとしてフォーマットできます:

Yaml

  1. discovery.seed_hosts:
  2. - 192.168.1.10:9300
  3. - 192.168.1.11
  4. - seeds.mydomain.com

あまり一般的ではありませんが、非スカラー値を配列としてフォーマットすることもできます:

Yaml

  1. discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11", "seeds.mydomain.com"]

環境変数の置換

設定ファイル内で${...}表記を使用して参照された環境変数は、環境変数の値に置き換えられます。例えば:

Yaml

  1. node.name: ${HOSTNAME}
  2. network.host: ${ES_NETWORK_HOST}

環境変数の値は単純な文字列でなければなりません。カンマ区切りの文字列を使用して、Elasticsearchがリストとして解析する値を提供します。例えば、Elasticsearchは次の文字列を${HOSTNAME}環境変数の値のリストに分割します:

Yaml

  1. 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を使用して起動していないまたはシャットダウンされたノードでのみ構成できます。
    静的設定は、クラスタ内のすべての関連ノードで設定する必要があります。