インデックスモジュール
インデックスモジュールは、インデックスごとに作成され、インデックスに関連するすべての側面を制御します。
インデックス設定
インデックスレベルの設定は、インデックスごとに設定できます。設定は次のようになります:
- 静的
- インデックス作成時またはクローズされたインデックスでのみ設定できます。または、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_shards
が30
(5 x 2 x 3
)に設定された5シャードインデックスは、2
または3
の因子で分割できます。言い換えれば、次のように分割できます:5
→10
→30
(2で分割し、次に3で分割)5
→15
→30
(3で分割し、次に2で分割)5
→30
(6で分割)
この設定のデフォルト値は、インデックス内のプライマリシャードの数に依存します。デフォルトは、最大1024シャードまで2の因子で分割できるように設計されています。
Elasticsearch 7.0.0以降、この設定はドキュメントがシャードに分配される方法に影響します。カスタムルーティングを持つ古いインデックスを再インデックスする場合、同じドキュメント分配を維持するためにindex.number_of_routing_shards
を明示的に設定する必要があります。関連する破壊的変更を参照してください。
-
index.codec
default
値は、LZ4圧縮で保存されたデータを圧縮しますが、best_compression
に設定することもでき、DEFLATEを使用してより高い圧縮率を実現しますが、保存されたフィールドのパフォーマンスが遅くなります。圧縮タイプを更新する場合、新しいものはセグメントがマージされた後に適用されます。セグメントのマージはforce mergeを使用して強制できます。ログデータセットのインデックス作成に関する実験では、best_compression
がdefault
と比較して最も理想的なシナリオで約18%低いストレージ使用量を提供し、インデックス作成スループットにわずかに影響を与えることが示されています(約2%)。-
index.mode
index.mode
設定は、時系列データやログの取り込みなど、特定のドメインに適用される設定を制御するために使用されます。設定やデフォルト値を適用するために使用される異なる相互排他的モードが存在し、ドキュメントのインデックス作成、ソート、およびインデックス作成やクエリパフォーマンスに影響を与える他のパラメータの値を制御します。
Python
resp = client.indices.create(
index="my-index-000001",
settings={
"index": {
"mode": "standard"
}
},
)
print(resp)
Js
const response = await client.indices.create({
index: "my-index-000001",
settings: {
index: {
mode: "standard",
},
},
});
console.log(response);
コンソール
PUT my-index-000001
{
"settings": {
"index":{
"mode":"standard"
}
}
}
このインデックスは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です。
WARNING: Configuring it to 0 may lead to temporary availability loss
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インデックス設定
- インデックスライフサイクル管理
- インデックスのライフサイクルポリシーとロールオーバーエイリアスを指定します。