Alibaba Cloud Elasticsearch (ES) の YML 設定を変更して、Alibaba Cloud Elasticsearch インスタンスの設定をカスタマイズできます。

手順

警告 YML 設定 を変更した後、変更を有効にするために、システムはインスタンスを再起動する必要があります。 インスタンスの再起動を確認する前に、ワークロードに悪影響を与えないことを確認してください。
  1. [クラスター設定] ページで、[YML 設定] の右側にある [設定の編集] をクリックします。
  2. [YML設定] ダイアログボックスで、次のようにパラメーターを設定します。YML 設定
    • 自動インデックス:新しいファイルが Alibaba Cloud Elasticsearch インスタンスにアップロードされたが、ファイルにインデックスが作成されていない場合、システムは自動的に新しいインデックスを作成できます。 この機能を無効にすることを推奨します。 この機能によって作成されたインデックスは、要件を満たさない場合があります。
    • 削除する時にインデックス名の指定 :インデックスを削除する際に、インデックスの名前を指定する必要があるかどうかを示します。 [削除する時、インデックス名にワイルドカード文字を使用できる] を選択した場合、ワイルドカード文字を使用して、一致するすべてのインデックスを削除できます。 削除されたインデックスを復元することはできません。 注意して進めてください。
    • 監査ログ検索 :この機能を有効にすると、Alibaba Cloud Elasticsearch インスタンスでインデックスを作成、削除、変更、または検索する際に、インデックスログエントリが作成されます。 これらのログエントリはディスク容量を消費し、インスタンスのパフォーマンスに影響します。 この機能を無効にすることを推奨します。 この機能を設定するときはご注意ください。
    • Watcher の有効化:この機能を有効にすると、X-Pack Watcher 機能を使用できます。 .watcher-history* インデックスを定期的に削除してください。 このインデックスは大量のディスク容量を消費します。
    • その他の設定:サポートしている設定項目は次のとおりです。 詳細は、「CORS のカスタマイズ (リージョン全体)」、「ホワイトリストのリモート Elasticsearch クラスターからインデックスを再作成する」、「監査ログのインデックス作成をカスタマイズする、「キューサイズをカスタマイズする」、および「パラメーター」をご参照ください。
      特に指定がない限り、以下の設定項目は Elasticsearch V5.5.3 および V6.3.2 とのみ互換性があります。
      • http.cors.enabled
      • http.cors.allow-origin
      • http.cors.max-age
      • http.cors.allow-methods
      • http.cors.allow-headers
      • http.cors.allow-credentials
      • reindex.remote.whitelist
      • action.auto_create_index
      • action.destructive_requires_name
      • thread_pool.bulk.queue_size (only compatible with Elasticsearch V5.5.3 with X-Pack)
      • thread_pool.write.queue_size (only compatible with Elasticsearch V6.3.2 with X-Pack)
      • thread_pool.search.queue_size
  3. 下にスクロールして、 [この操作は、インスタンスを再起動します。確認してから操作を行ってください。 ] チェックボックスをオンにして操作を確認し、[保存] をクリックします。

    [保存] をクリックすると、インスタンスが再起動されます。 [タスク] ページで進行状況を確認できます。 インスタンスが再起動されると、YML 設定が更新されます。

CORS のカスタマイズ (リージョン全体)

重要
  • 次の表の設定は、Alibaba Cloud Elasticsearch が HTTP をサポートするために提供しているカスタム設定です。
  • 次の表の設定は、 静的設定のみをサポートしています。 したがって、設定を有効にしたい場合、 elasticsearch.yml ファイルに設定を追加する必要があります。
  • 以下の設定は、クラスターのネットワーク設定に依存しています。
設定項目 説明
http.cors.enabled オリジン間リソース共有 (CORS) 設定。 この設定は、別のオリジンのブラウザーがリクエストを送信することを Elasticsearch が許可するかどうかを示します。 有効な値: truefalse
  • この値を true に設定し、CORS を有効にします。 CORS を有効にすると、Elasticsearch はプリフライト (OPTIONS) CORS リクエストを処理できます。 リクエストのオリジンが http.cors.allow-origin リストで宣言されている場合、Elasticsearch は応答に含まれる Access-Control-Allow-Origin ヘッダーを持つリクエストに応答します。
  • この値を false (デフォルト値) に設定し、CORS を無効にします。 CORS が無効になった後、Elasticsearch はリクエストヘッダーの発信元情報を無視します。 Elasticsearch から返される応答には Access-Control-Allow-Origin ヘッダーが含まれないため、CORS は事実上無効になります。 オリジンヘッダーを含む プリフライトリクエストの送信をクライアントがサポートしていない場合、または応答の Access-Control-Allow-Origin ヘッダーを認証しない場合、オリジン間のセキュリティが危険にさらされます。 Elasticsearch で CORS が無効になっている場合、クライアントがこれを知る唯一の方法は、 OPTIONS リクエストを送信し、必要なヘッダーが欠落しているかどうかを確認することです。
http.cors.allow-origin

オリジン設定。 この設定は、許可するオリジンを指定します。 デフォルトでは、オリジンは許可されていません。

値の先頭と末尾にスラッシュ (/) を追加すると、値は正規表現として扱われます。 これにより、正規表現を使用して HTTP および HTTPS リクエストに対応できます。 たとえば、/https?:\/\/localhost(:[0-9]+)? / を使用して、正規表現に一致するリクエストに応答できます。

アスタリスク (*) は有効な文字ですが、クラスターが任意のオリジンに対してオープンであることを意味するため、セキュリティリスクと見なされます。 アスタリスクの使用は推奨していません。
http.cors.max-age ブラウザーはOPTIONS リクエストを送信して、CORS 設定を照会できます。 この設定は、取得された CORS 設定のキャッシュ時間を指定します。 デフォルトは 1728000 秒 (20 日間) です。
http.cors.allow-methods リクエストメソッドの設定。 この設定は、許可するメソッドを指定します。 デフォルトは OPTIONS、HEAD、GET、POST、PUT、DELETE です。
http.cors.allow-headers リクエストヘッダーの設定。 この設定は、許可するヘッダーを指定します。 デフォルトはX-Requested-With、Content-Type、Content-Length です。
http.cors.allow-credentials 資格情報の設定。 この設定は、Elasticsearch が Access-Control-Allow-Credentials ヘッダーを返すことを許可するかどうかを示します。 デフォルトは false です。つまり、Elasticsearch はヘッダーを返すことが許可されていません。 値を true にして、Elasticsearch がヘッダーを返すことができるようにします。

以下は、カスタム CORS 設定の例です。

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, Authorization"

詳細については、Elasticsearch 公式ドキュメントの 「HTTP」をご参照ください。

ホワイトリストのリモート Elasticsearch クラスターからインデックスを再作成する

インデックス再作成コンポーネントを使用すると、リモート Elasticsearch クラスターからインデックスを再作成できます。 この機能は、すべての Elasticsearch バージョンでサポートしています。

インデックス再作成機能を使用すると、以前の Elasticsearch バージョンのインデックスのデータを、新しくリリースされた Elasticsearch バージョンのインデックスにコピーできます。 以下に例を示します。 詳細については『Reindex API』をご参照ください。

POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200",
      "username": "user",
      "password": "pass"
    },
    "index": "source",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}
  • host:リモートホストのアドレス。 アドレスには、プロトコル、ドメイン、およびポート情報が含まれている必要があります。 例: https://otherhost:9200
    重要 リモートホストは、 reindex.remote.whitelist プロパティを使用し、ホストがこの API 操作を呼び出すことができるように elasticsearch.yml ファイルで宣言される必要があります。 ホストは、 hostport の組み合わせを使用して宣言できます。 複数のホストを宣言するには、カンマ (,) で区切ります。 例:otherhost:9200, another:9200, 127.0.10.**:9200,localhost:** ホワイトリストはプロトコル情報を無視するため、ホストとポートのみが使用されます。
  • usernamepassword はオプションです。 リクエストされた Elasticsearch サービスが Basic 認証を使用する場合、リクエストに情報を含めます。 Basic認証は、HTTPS 経由で実装する必要があります。 それ以外の場合、パスワードはプレーンテキストで送信されます。
  • ホストがすでにホワイトリストに追加されている場合、 query は検証または変更なしで Elasticsearch サービスに直接送信されます。
  • リモートクラスターからのインデックス再作成は、manual slicing または automatic slicing をサポートしていません。 詳細については、 『Manual slicing』および『Automatic slicing』をご参照ください。
バッチサイズ

リモートクラスターからのインデックス再作成では、オンヒープバッファが使用されます。 デフォルトでは、最大バッチサイズは 100 MB です。 ソースクラスターのインデックスに大きなドキュメントが含まれる場合、バッチサイズを小さな値に調整する必要があります。

次の例では、バッチサイズは 10 に設定されています。
POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200"
    },
    "index": "source",
    "size": 10,
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}
タイムアウト
  • socket_timeout を使用し、socket 読み取りタイムアウトを設定します。 デフォルトのタイムアウトは 30 秒です。
  • connect_timeout を使用して、接続タイムアウトを設定します。 デフォルトのタイムアウトは 1 秒です。

次の例では、socket 読み取りタイムアウトは 1 分に設定し、接続タイムアウトは 10 秒に設定しています。

POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200",
      "socket_timeout": "1m",
      "connect_timeout": "10s"
    },
    "index": "source",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}

監査ログのインデックス作成をカスタマイズする

監査ログのインデックス作成を有効にする
Alibaba Cloud Elasticsearch では、監査ログを表示できません。 Elasticsearch インスタンスの監査イベントを追跡する場合は、Elasticsearch コンソールにログインし、インスタンスの監査ログインデックス機能を有効にする必要があります。

監査ログのインデックス作成を有効にすると、監査イベントがインスタンスに保存され、 .security_audit_log-* で始まるインデックスに追加されます。

監査ログのインデックス作成を設定する
重要
  • 監査プロセス中にフィルタリングは実行されません。 したがって、監査イベントにリクエストボディが含まれる場合、プレーンテキストの機密データは危険にさらされる可能性があります。
  • 監査イベントにインデックスが作成される際、Elasticsearch インスタンスのストレージ容量が消費されます。 Alibaba Cloud Elasticsearch は、期限切れのインデックスを自動的に削除しません。 古い監査イベントインデックスを手動で削除する必要があります。
監査ログのインデックス設定は次のとおりです。
xpack.security.audit.index.bulk_size: 5000
xpack.security.audit.index.events.emit_request_body: false
xpack.security.audit.index.events.exclude: run_as_denied,anonymous_access_denied,realm_authentication_failed,access_denied,connection_denied
xpack.security.audit.index.events.include: authentication_failed,access_granted,tampered_request,connection_granted,run_as_granted
xpack.security.audit.index.flush_interval: 180s
xpack.security.audit.index.rollover: hourly
xpack.security.audit.index.settings.index.number_of_replicas: 1
xpack.security.audit.index.settings.index.number_of_shards: 10
設定項目 デフォルト 説明
xpack.security.audit.index.bulk_size 1000 1 回の書き込みでバッチ処理される監査イベントの数を指定します。
xpack.security.audit.index.flush_interval 1s バッファリングされた監査イベントをインデックスにフラッシュする頻度を指定します。
xpack.security.audit.index.rollover daily 新しいインデックスにロールオーバーする頻度を指定します。 有効な値: hourlydailyweekly 、およびmonthly
xpack.security.audit.index.events.include access_denied, access_granted、anonymous_access_denied、authentication_failed、connection_denied、tampered_request、 run_as_denied、run_as_granted インデックスを作成する監査イベントのタイプを指定します。 監査イベントタイプの詳細については、『Auditing event types』をご参照ください。
xpack.security.audit.index.events.exclude インデックスから除外する監査イベントのタイプを指定します。
xpack.security.audit.index.events.emit_request_body false authentication_failed などの特定のイベントに REST リクエストのボディを含めるかどうかを指定します。

監査イベントが保存されるインデックスを設定することもできます。 xpack.security.audit.index.settings を名前空間として使用し、 elasticsearch.yml ファイルに設定を追加します。

次の例では、監査イベントインデックスのシャードとレプリカの数を両方とも 1 に設定しています。
xpack.security.audit.index.settings:
  index:
    number_of_shards: 1
    number_of_replicas: 1
パラメーターを渡すことで監査イベントインデックスを設定する場合は、監査ログのインデックス作成を有効にする際に、前述の設定を YML 設定に追加します。 設定が有効になると、Elasticsearch インスタンスに監査イベントインデックスが作成されます。 監査イベントインデックスをカスタマイズしない場合、Elasticsearch はデフォルト設定を使用して次のインデックスを作成します。number_of_shards: 5 および number_of_replicas: 1

詳細については、『Auditing Security Settings』をご参照ください。

キューサイズをカスタマイズする

thread_pool.bulk.queue_sizethread_pool.write.queue_size 、およびthread_pool.search.queue_size 設定をカスタマイズし、ドキュメント書き込みキューとドキュメント検索キューのサイズを設定できます。

次の例では、ドキュメントの書き込みと検索キューのサイズを 500 に設定しています。 必要に応じて値を調整できます。

特に指定がない限り、以下の例は Alibaba Cloud Elasticsearch V5.5.3 および V6.3.2 とのみ互換性があります。
thread_pool.bulk.queue_size:500 (X-Pack 搭載の Elasticsearch V5.5.3 とのみ互換性があります)
thread_pool.write.queue_size:500 (X-Pack 搭載の Elasticsearch V6.3.2 とのみ互換性があります)
thread_pool.search.queue_size: 500

パラメーター

設定項目 説明
index.codec
デフォルトでは、Elasticsearch は LZ4 圧縮でデータを圧縮します。 Elasticsearch クラスターが Ultra クラウドディスクを使用する hot-warm クラスターである場合は、パラメーターを best_compression に設定し、DEFLATE を使用して圧縮率を高めます。 圧縮タイプを変更すると、セグメントがマージされる際に、新しい圧縮タイプを使用してデータが圧縮されます。
重要 best_compression タイプは、読み取りおよび書き込みパフォーマンスを低下させます。
RESTful API 設定
RESTful API を呼び出して、 index.codec パラメーターを設定できます。 例は次のとおりです。
PUT $index_name/_settings
{
  "index": {
    "codec": "best_compression"
  }
}
  • リクエストを送信する前に、関連するインデックスを閉じる必要があります。 閉じない場合、エラーが発生します。
  • $ index_name :インデックスの名前に置き換えます。