インデックスモジュール

インデックスモジュールは、インデックスごとに作成され、インデックスに関連するすべての側面を制御します。

インデックス設定

インデックスレベルの設定は、インデックスごとに設定できます。設定は次のようになります:

  • 静的
  • インデックス作成時またはクローズされたインデックスでのみ設定できます。または、update-index-settings APIを使用して、reopenクエリパラメータをtrueに設定することで(影響を受けるインデックスを自動的にクローズして再オープンします)。
  • 動的
  • ライブインデックスでupdate-index-settings APIを使用して変更できます。

クローズされたインデックスのドキュメント化されたインデックス設定は変更できます。ただし、クローズされたインデックスのドキュメント化されていないインデックス設定を変更することはサポートされておらず、エラーが発生する可能性があります。

静的インデックス設定

以下は、特定のインデックスモジュールに関連付けられていないすべての静的インデックス設定のリストです:

  • index.number_of_shards
  • インデックスが持つべきプライマリシャードの数。デフォルトは1です。この設定はインデックス作成時にのみ設定できます。クローズされたインデックスでは変更できません。
    シャードの数は、インデックスごとに1024に制限されています。この制限は、リソース割り当てによりクラスターを不安定にするインデックスの偶発的な作成を防ぐための安全制限です。この制限は、クラスターの一部であるすべてのノードでexport ES_JAVA_OPTS="-Des.index.max_number_of_shards=128"システムプロパティを指定することによって変更できます。

  • index.number_of_routing_shards
  • index.number_of_shardsを使用してプライマリシャードにドキュメントをルーティングするために使用される整数値。 _routingフィールドを参照してください。
    Elasticsearchは、インデックスを分割する際にこの値を使用します。たとえば、number_of_routing_shards305 x 2 x 3)に設定された5シャードインデックスは、2または3の因子で分割できます。言い換えれば、次のように分割できます:
    • 51030(2で分割し、次に3で分割)
    • 51530(3で分割し、次に2で分割)
    • 530(6で分割)
      この設定のデフォルト値は、インデックス内のプライマリシャードの数に依存します。デフォルトは、最大1024シャードまで2の因子で分割できるように設計されています。
      Elasticsearch 7.0.0以降、この設定はドキュメントがシャードに分配される方法に影響します。カスタムルーティングを持つ古いインデックスを再インデックスする場合、同じドキュメント分配を維持するためにindex.number_of_routing_shardsを明示的に設定する必要があります。関連する破壊的変更を参照してください。
  • index.codec
  • default値は、LZ4圧縮で保存されたデータを圧縮しますが、best_compressionに設定することもでき、DEFLATEを使用してより高い圧縮率を実現しますが、保存されたフィールドのパフォーマンスが遅くなります。圧縮タイプを更新する場合、新しいものはセグメントがマージされた後に適用されます。セグメントのマージはforce mergeを使用して強制できます。ログデータセットのインデックス作成に関する実験では、best_compressiondefaultと比較して最も理想的なシナリオで約18%低いストレージ使用量を提供し、インデックス作成スループットにわずかに影響を与えることが示されています(約2%)。
  • index.mode
  • index.mode設定は、時系列データやログの取り込みなど、特定のドメインに適用される設定を制御するために使用されます。設定やデフォルト値を適用するために使用される異なる相互排他的モードが存在し、ドキュメントのインデックス作成、ソート、およびインデックス作成やクエリパフォーマンスに影響を与える他のパラメータの値を制御します。

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. settings={
  4. "index": {
  5. "mode": "standard"
  6. }
  7. },
  8. )
  9. print(resp)

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. settings: {
  4. index: {
  5. mode: "standard",
  6. },
  7. },
  8. });
  9. console.log(response);

コンソール

  1. PUT my-index-000001
  2. {
  3. "settings": {
  4. "index":{
  5. "mode":"standard"
  6. }
  7. }
  8. }
このインデックスはstandardインデックスモードを使用しています

インデックスモードは次の値をサポートします:

  • null
  • デフォルト値(standardと同じ)。
  • standard
  • デフォルト設定での標準インデックス作成。
  • time_series
  • TSDS設定に記載されたメトリックのストレージに最適化されたインデックスモード。
  • logsdb
  • ログのストレージに最適化されたインデックスモード。hostnameおよびtimestampフィールドにデフォルトのソート設定を適用し、合成_sourceを使用します。異なるフィールドでのインデックスソートは引き続き許可されます。 [プレビュー] この機能は技術プレビュー中であり、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために取り組みますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。

    • index.routing_partition_size
    • カスタムrouting値が移動できるシャードの数。デフォルトは1で、インデックス作成時にのみ設定できます。この値はindex.number_of_shards未満でなければなりませんが、index.number_of_shards値が1の場合は例外です。この設定がどのように使用されるかについての詳細は、インデックスパーティションへのルーティングを参照してください。

    • index.soft_deletes.enabled
    • [7.6.0] 7.6.0で非推奨。ソフトデリートが無効なインデックスの作成は非推奨であり、将来のElasticsearchバージョンで削除されます。 インデックスでソフトデリートが有効かどうかを示します。ソフトデリートはインデックス作成時にのみ設定でき、Elasticsearch 6.5.0以降に作成されたインデックスでのみ設定できます。デフォルトはtrueです。

    • index.soft_deletes.retention_lease.period
    • シャード履歴保持リースが期限切れと見なされる前に保持する最大期間。シャード履歴保持リースは、ソフトデリートがLuceneインデックスのマージ中に保持されることを保証します。ソフトデリートがフォロワーに複製される前にマージされると、リーダーの履歴が不完全なため、次のプロセスが失敗します。デフォルトは12hです。
    • index.load_fixed_bitset_filters_eagerly
    • ネストされたクエリのためにキャッシュフィルターが事前にロードされるかどうかを示します。可能な値はtrue(デフォルト)およびfalseです。
    • index.shard.check_on_startup
    • エキスパートユーザーのみ。この設定は、シャードの起動時に非常に高価な処理を有効にし、クラスターの問題を診断する際にのみ役立ちます。使用する場合は、一時的にのみ使用し、不要になったら削除する必要があります。
      Elasticsearchは、シャードのライフサイクルのさまざまなポイントでシャードの内容の整合性チェックを自動的に実行します。たとえば、レプリカを回復する際やスナップショットを取得する際に転送されるすべてのファイルのチェックサムを検証します。また、ノードを起動したときやシャードの回復または移動が完了したときに、シャードを開く際に多くの重要なファイルの整合性を検証します。したがって、実行中のシャードの整合性を手動で確認するには、それを新しいリポジトリにスナップショットとして取得するか、新しいノードに回復することができます。
      この設定は、Elasticsearchがシャードを開く際に追加の整合性チェックを実行するかどうかを決定します。これらのチェックが破損を検出した場合、シャードが開かれるのを防ぎます。次の値を受け入れます:
  • false
  • シャードを開く際に破損の追加チェックを実行しない。これはデフォルトで推奨される動作です。
  • checksum
  • シャード内のすべてのファイルのチェックサムがその内容と一致することを確認します。これにより、ディスクから読み取ったデータがElasticsearchが元々書き込んだデータと異なる場合(たとえば、検出されていないディスクの破損や他のハードウェアの故障による場合)を検出できます。これらのチェックには、ディスクからシャード全体を読み取る必要があり、かなりの時間とIO帯域幅を要し、クラスターのパフォーマンスに影響を与える可能性があります。
  • true
  • checksumと同じチェックを実行し、シャード内の論理的不整合もチェックします。これは、たとえば、データが書き込まれている間に破損したRAMや他のハードウェアの故障によって引き起こされる可能性があります。これらのチェックには、ディスクからシャード全体を読み取る必要があり、かなりの時間とIO帯域幅を要し、その後、シャードの内容に対してさまざまなチェックを実行する必要があり、かなりの時間、CPU、およびメモリを要します。

動的インデックス設定

以下は、特定のインデックスモジュールに関連付けられていないすべての動的インデックス設定のリストです:

  • index.number_of_replicas
  • 各プライマリシャードが持つレプリカの数。デフォルトは1です。

    1. WARNING: Configuring it to 0 may lead to temporary availability loss
    2. during node restarts or permanent data loss in case of data corruption.

  • index.auto_expand_replicas
  • クラスター内のデータノードの数に基づいてレプリカの数を自動的に拡張します。ダッシュ区切りの下限と上限(例:0-5)を設定するか、上限にallを使用します(例:0-all)。デフォルトはfalse(すなわち、無効)です。自動拡張されたレプリカの数は、割り当てフィルタリングルールのみを考慮し、ノードごとの総シャードなどの他の割り当てルールは無視されるため、適用可能なルールがすべてのレプリカの割り当てを妨げる場合、クラスターの健康がYELLOWになる可能性があります。
    上限がallの場合、シャード割り当ての認識およびcluster.routing.allocation.same_shard.hostはこのインデックスに対して無視されます。

  • index.search.idle.after
  • シャードが検索または取得リクエストを受け取らない時間。検索アイドルと見なされるまでの時間(デフォルトは30s

  • index.refresh_interval
  • リフレッシュ操作を実行する頻度。これにより、インデックスへの最近の変更が検索に表示されます。デフォルトは1sです。リフレッシュを無効にするには-1に設定できます。この設定が明示的に設定されていない場合、少なくともindex.search.idle.after秒間検索トラフィックを受けていないシャードは、検索リクエストを受けるまでバックグラウンドリフレッシュを受けません。リフレッシュが保留中のアイドルシャードに対する検索は、そのシャードの検索操作の一部としてリフレッシュをトリガーします。この動作は、検索が実行されないデフォルトのケースでバルクインデックス作成を自動的に最適化することを目的としています。この動作をオプトアウトするには、リフレッシュ間隔として1sの明示的な値を設定する必要があります。

  • index.max_result_window
  • このインデックスへの検索の最大from + sizeの値。デフォルトは10000です。検索リクエストは、from + sizeに比例したヒープメモリと時間を要し、これがそのメモリを制限します。スクロールまたは検索後は、これを引き上げるためのより効率的な代替手段です。
  • index.max_inner_result_window
  • このインデックスへの内部ヒット定義およびトップヒット集計の最大from + sizeの値。デフォルトは100です。内部ヒットおよびトップヒット集計は、from + sizeに比例したヒープメモリと時間を要し、これがそのメモリを制限します。
  • index.max_rescore_window
  • このインデックスの検索におけるwindow_sizeリクエストの最大値。デフォルトはindex.max_result_windowで、10000にデフォルト設定されています。検索リクエストは、max(window_size, from + size)に比例したヒープメモリと時間を要し、これがそのメモリを制限します。
  • index.max_docvalue_fields_search
  • クエリで許可されるdocvalue_fieldsの最大数。デフォルトは100です。ドキュメント値フィールドはコストが高く、フィールドごとにドキュメントのシークが発生する可能性があります。
  • index.max_script_fields
  • クエリで許可されるscript_fieldsの最大数。デフォルトは32です。

  • index.max_ngram_diff
  • NGramTokenizerおよびNGramTokenFilterのmin_gramとmax_gramの間の最大許可差。デフォルトは1です。

  • index.max_shingle_diff
  • shingleトークンフィルターのmax_shingle_sizeとmin_shingle_sizeの間の最大許可差。デフォルトは3です。
  • index.max_refresh_listeners
  • インデックスの各シャードで利用可能なリフレッシュリスナーの最大数。これらのリスナーは、refresh=wait_forを実装するために使用されます。
  • index.analyze.max_token_count
  • _analyze APIを使用して生成できるトークンの最大数。デフォルトは10000です。

  • index.highlight.max_analyzed_offset
  • ハイライトリクエストのために分析される最大文字数。この設定は、オフセットや用語ベクターなしでインデックスされたテキストに対してハイライトが要求される場合にのみ適用されます。デフォルトは1000000です。

  • index.max_terms_count
  • Terms Queryで使用できる最大用語数。デフォルトは65536です。

  • index.max_regex_length
  • regexpまたはprefixクエリで使用できる値の最大長。デフォルトは1000です。

  • index.query.default_field
  • (文字列または文字列の配列) 1つ以上のフィールドに一致するワイルドカード(*)パターン。次のクエリタイプは、デフォルトでこれらの一致するフィールドを検索します:

  • index.routing.allocation.enable
  • このインデックスのシャード割り当てを制御します。次のように設定できます:
    • all(デフォルト) - すべてのシャードのシャード割り当てを許可します。
    • primaries - プライマリシャードのみのシャード割り当てを許可します。
    • new_primaries - 新しく作成されたプライマリシャードのみのシャード割り当てを許可します。
    • none - シャード割り当ては許可されません。
  • index.routing.rebalance.enable
  • このインデックスのシャードの再バランスを有効にします。次のように設定できます:
    • all(デフォルト) - すべてのシャードのシャードの再バランスを許可します。
    • primaries - プライマリシャードのみのシャードの再バランスを許可します。
    • replicas - レプリカシャードのみのシャードの再バランスを許可します。
    • none - シャードの再バランスは許可されません。
  • index.gc_deletes
  • 削除されたドキュメントのバージョン番号さらなるバージョン付き操作に対して利用可能である期間の長さ。デフォルトは60sです。

  • index.default_pipeline
  • インデックスのデフォルトインジェストパイプライン。デフォルトのパイプラインが設定されていて、パイプラインが存在しない場合、インデックスリクエストは失敗します。デフォルトはpipelineパラメータを使用してオーバーライドできます。特別なパイプライン名_noneは、デフォルトのインジェストパイプラインが実行されないことを示します。

  • index.final_pipeline
  • インデックスの最終インジェストパイプライン。最終パイプラインが設定されていて、パイプラインが存在しない場合、インデックスリクエストは失敗します。最終パイプラインは、リクエストパイプライン(指定されている場合)およびデフォルトパイプライン(存在する場合)の後に常に実行されます。特別なパイプライン名_noneは、最終インジェストパイプラインが実行されないことを示します。
    _indexフィールドを変更するために最終パイプラインを使用することはできません。パイプラインが_indexフィールドを変更しようとすると、インデックスリクエストは失敗します。
  • index.hidden
  • インデックスがデフォルトで非表示にされるべきかどうかを示します。非表示のインデックスは、ワイルドカード式を使用する際にデフォルトで返されません。この動作は、expand_wildcardsパラメータを使用してリクエストごとに制御されます。可能な値はtrueおよびfalse(デフォルト)です。

他のインデックスモジュールの設定

他のインデックス設定はインデックスモジュールで利用可能です:

  • 分析
  • アナライザー、トークナイザー、トークンフィルター、および文字フィルターを定義するための設定。
  • インデックスシャード割り当て
  • シャードがノードにどこで、いつ、どのように割り当てられるかを制御します。
  • マッピング
  • インデックスの動的マッピングを有効または無効にします。
  • マージ
  • バックグラウンドマージプロセスによってシャードがどのようにマージされるかを制御します。
  • 類似性
  • 検索結果のスコアリングをカスタマイズするためのカスタム類似性設定を構成します。
  • スローログ
  • スロークエリおよびフェッチリクエストがどのようにログされるかを制御します。
  • ストア
  • シャードデータにアクセスするために使用されるファイルシステムのタイプを構成します。
  • トランスログ
  • トランザクションログおよびバックグラウンドフラッシュ操作を制御します。
  • 履歴保持
  • インデックス内の操作の履歴の保持を制御します。
  • インデックス作成圧力
  • インデックス作成のバックプレッシャー制限を構成します。

X-Packインデックス設定