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
gateway.recover_after_master_nodes
gateway.recover_after_data_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 ノードがデータノードではないことを定義します。