Elasticsearch-モジュール
Elasticsearchは、その機能を担当するいくつかのモジュールで構成されています。これらのモジュールには、次の2種類の設定があります。
Static Settings−これらの設定は、Elasticsearchを開始する前にconfig(elasticsearch.yml)ファイルで構成する必要があります。これらの設定による変更を反映するには、クラスター内のすべての関連ノードを更新する必要があります。
Dynamic Settings −これらの設定はライブElasticsearchで設定できます。
この章の次のセクションでは、Elasticsearchのさまざまなモジュールについて説明します。
クラスターレベルのルーティングとシャードの割り当て
クラスターレベルの設定により、異なるノードへのシャードの割り当てと、クラスターをリバランスするためのシャードの再割り当てが決定されます。これらは、シャードの割り当てを制御するための次の設定です。
クラスターレベルのシャード割り当て
設定 | 可能な値 | 説明 |
---|---|---|
cluster.routing.allocation.enable | ||
すべて | このデフォルト値により、すべての種類のシャードにシャードを割り当てることができます。 | |
予備選挙 | これにより、プライマリシャードに対してのみシャードの割り当てが可能になります。 | |
new_primaries | これにより、新しいインデックスのプライマリシャードにのみシャードを割り当てることができます。 | |
なし | これにより、シャードの割り当ては許可されません。 | |
cluster.routing.allocation .node_concurrent_recoveries | 数値(デフォルトでは2) | これにより、同時シャードリカバリの数が制限されます。 |
cluster.routing.allocation .node_initial_primaries_recoveries | 数値(デフォルトでは4) | これにより、並列の初期一次リカバリーの数が制限されます。 |
cluster.routing.allocation .same_shard.host | ブール値(デフォルトではfalse) | これにより、同じ物理ノード内の同じシャードの複数のレプリカの割り当てが制限されます。 |
indexs.recovery.concurrent _streams | 数値(デフォルトでは3) | これは、ピアシャードからのシャードリカバリ時にノードごとに開いているネットワークストリームの数を制御します。 |
indexs.recovery.concurrent _small_file_streams | 数値(デフォルトでは2) | これにより、シャードリカバリ時にサイズが5MB未満の小さなファイルのノードあたりのオープンストリームの数が制御されます。 |
cluster.routing.rebalance.enable | ||
すべて | このデフォルト値により、あらゆる種類のシャードのバランスをとることができます。 | |
予備選挙 | これにより、プライマリシャードに対してのみシャードバランシングが可能になります。 | |
レプリカ | これにより、レプリカシャードに対してのみシャードバランシングが可能になります。 | |
なし | これにより、いかなる種類のシャードバランシングも許可されません。 | |
cluster.routing.allocation .allow_rebalance | ||
常に | このデフォルト値は常にリバランスを許可します。 | |
indexs_primaries _active | これにより、クラスター内のすべてのプライマリシャードが割り当てられたときにリバランスが可能になります。 | |
Indices_all_active | これにより、すべてのプライマリシャードとレプリカシャードが割り当てられたときにリバランスが可能になります。 | |
cluster.routing.allocation.cluster _concurrent_rebalance | 数値(デフォルトでは2) | これにより、クラスター内の同時シャードバランシングの数が制限されます。 |
cluster.routing.allocation .balance.shard | フロート値(デフォルトでは0.45f) | これは、すべてのノードに割り当てられたシャードの重み係数を定義します。 |
cluster.routing.allocation .balance.index | フロート値(デフォルトでは0.55f) | これは、特定のノードに割り当てられたインデックスごとのシャード数の比率を定義します。 |
cluster.routing.allocation .balance.threshold | 負でないfloat値(デフォルトでは1.0f) | これは、実行する必要のある操作の最小最適化値です。 |
ディスクベースのシャード割り当て
設定 | 可能な値 | 説明 |
---|---|---|
cluster.routing.allocation.disk.threshold_enabled | ブール値(デフォルトではtrue) | これにより、ディスク割り当て決定機能が有効または無効になります。 |
cluster.routing.allocation.disk.watermark.low | 文字列値(デフォルトでは85%) | これは、ディスクの最大使用量を示します。この時点以降、他のシャードをそのディスクに割り当てることはできません。 |
cluster.routing.allocation.disk.watermark.high | 文字列値(デフォルトでは90%) | これは、割り当て時の最大使用量を示します。割り当て時にこのポイントに達すると、Elasticsearchはそのシャードを別のディスクに割り当てます。 |
cluster.info.update.interval | 文字列値(デフォルトでは30秒) | これは、ディスク使用量のチェックの間隔です。 |
cluster.routing.allocation.disk.include_relocations | ブール値(デフォルトではtrue) | これにより、ディスク使用量を計算するときに、現在割り当てられているシャードを考慮するかどうかが決まります。 |
発見
このモジュールは、クラスターがその中のすべてのノードの状態を検出して維持するのに役立ちます。ノードがノードに追加またはノードから削除されると、クラスターの状態が変化します。クラスター名の設定は、異なるクラスター間に論理的な違いを作成するために使用されます。クラウドベンダーが提供するAPIの使用に役立つモジュールがいくつかあり、それらは以下のとおりです。
- Azureディスカバリー
- EC2ディスカバリー
- Google ComputeEngineの発見
- 禅の発見
ゲートウェイ
このモジュールは、クラスターの完全な再起動の間、クラスターの状態とシャードデータを維持します。このモジュールの静的設定は次のとおりです-
設定 | 可能な値 | 説明 |
---|---|---|
Gateway.expected_nodes | 数値(デフォルトでは0) | ローカル・シャードのリカバリーのためにクラスター内にあると予想されるノードの数。 |
Gateway.expected_master_nodes | 数値(デフォルトでは0) | リカバリーを開始する前にクラスター内にあると予想されるマスターノードの数。 |
Gateway.expected_data_nodes | 数値(デフォルトでは0) | リカバリーを開始する前にクラスターで予期されるデータノードの数。 |
Gateway.recover_after_time | 文字列値(デフォルトでは5m) | これは、ディスク使用量のチェックの間隔です。 |
cluster.routing.allocation。disk.include_relocations | ブール値(デフォルトではtrue) | これは、クラスターに参加しているノードの数に関係なく、リカバリー・プロセスが開始を待機する時間を指定します。 gateway.recover_ after_nodes |
HTTP
このモジュールは、HTTPクライアントとElasticsearchAPI間の通信を管理します。このモジュールは、http.enabledの値をfalseに変更することで無効にできます。
以下は、このモジュールを制御するための設定(elasticsearch.ymlで構成)です-
S.No | 設定と説明 |
---|---|
1 | http.port これはElasticsearchにアクセスするためのポートであり、範囲は9200〜9300です。 |
2 | http.publish_port このポートはhttpクライアント用であり、ファイアウォールの場合にも役立ちます。 |
3 | http.bind_host これはhttpサービスのホストアドレスです。 |
4 | http.publish_host これはhttpクライアントのホストアドレスです。 |
5 | http.max_content_length これは、httpリクエストのコンテンツの最大サイズです。デフォルト値は100mbです。 |
6 | http.max_initial_line_length これはURLの最大サイズであり、デフォルト値は4kbです。 |
7 | http.max_header_size これは最大httpヘッダーサイズであり、デフォルト値は8kbです。 |
8 | http.compression これにより、圧縮のサポートが有効または無効になり、デフォルト値はfalseになります。 |
9 | http.pipelinig これにより、HTTPパイプラインが有効または無効になります。 |
10 | http.pipelining.max_events これにより、HTTPリクエストを閉じる前にキューに入れられるイベントの数が制限されます。 |
インデックス
このモジュールは、すべてのインデックスに対してグローバルに設定される設定を維持します。以下の設定は、主にメモリ使用量に関連しています-
サーキットブレーカー
これは、操作によってOutOfMemroyErrorが発生するのを防ぐために使用されます。この設定は、主にJVMヒープサイズを制限します。たとえば、indexes.breaker.total.limit設定は、デフォルトでJVMヒープの70%になります。
フィールドデータキャッシュ
これは主にフィールドに集約するときに使用されます。割り当てるのに十分なメモリを用意することをお勧めします。フィールドデータキャッシュに使用されるメモリの量は、indexes.fielddata.cache.size設定を使用して制御できます。
ノードクエリキャッシュ
このメモリは、クエリ結果をキャッシュするために使用されます。このキャッシュは、最近使用されていない(LRU)エビクションポリシーを使用します。Indices.queries.cahce.size設定は、このキャッシュのメモリサイズを制御します。
インデックスバッファ
このバッファは、新しく作成されたドキュメントをインデックスに保存し、バッファがいっぱいになるとそれらをフラッシュします。indexs.memory.index_buffer_sizeのように設定すると、このバッファーに割り当てられるヒープの量が制御されます。
シャードリクエストキャッシュ
このキャッシュは、すべてのシャードのローカル検索データを格納するために使用されます。キャッシュは、インデックスの作成中に有効にすることも、URLパラメータを送信して無効にすることもできます。
Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true
インデックスの回復
リカバリプロセス中にリソースを制御します。以下は設定です-
設定 | デフォルト値 |
---|---|
indexs.recovery.concurrent_streams | 3 |
indexs.recovery.concurrent_small_file_streams | 2 |
indexs.recovery.file_chunk_size | 512kb |
indexs.recovery.translog_ops | 1000 |
indexs.recovery.translog_size | 512kb |
indexs.recovery.compress | true |
indexs.recovery.max_bytes_per_sec | 40mb |
TTL間隔
存続時間(TTL)間隔は、ドキュメントが削除されるまでの時間を定義します。以下は、このプロセスを制御するための動的設定です。
設定 | デフォルト値 |
---|---|
indexs.ttl.interval | 60年代 |
indexs.ttl.bulk_size | 1000 |
ノード
各ノードには、データノードにするかどうかを選択できます。このプロパティは、変更することで変更できますnode.data設定。値を次のように設定しますfalse ノードがデータノードではないことを定義します。