Elasticsearchは初めてですか?Elasticsearchを使い始めるウェビナーに参加しましょう。無料のクラウドトライアルを始めるか、今すぐマシンでElasticを試すこともできます。
Elasticsearch は、大量のデータを処理し、高い可用性を提供できる分散システムとして設計されています。これを可能にする重要な機能の 1 つは、 number_of_replicas設定によって制御されるインデックス レプリケーションの概念です。この記事では、この設定の詳細、その影響、および適切な構成方法について詳しく説明します。
Elasticsearchにおけるレプリカの役割
Elasticsearch では、インデックスは複数のプライマリ シャードに分割されたドキュメントのコレクションです。各プライマリ シャードは自己完結型の Apache Lucene インデックスであり、インデックス内のドキュメントはすべてのプライマリ シャードに分散されます。高可用性とデータの冗長性を確保するために、Elasticsearch では各シャードにレプリカと呼ばれる 1 つ以上のコピーを持たせることができます。number_of_replicas設定は、Elasticsearch がインデックス内の各プライマリ シャードに対して作成するレプリカ シャード (コピー) の数を制御します。デフォルトでは、Elasticsearch はプライマリ シャードごとに 1 つのレプリカを作成しますが、これはシステムの要件に応じて変更できます。
number_of_replicas の設定
number_of_replicas設定は、インデックスの作成時に構成することも、後で更新することもできます。インデックス作成時に設定する方法は次のとおりです。
この例では、Elasticsearch はmy_indexインデックス内のプライマリ シャードごとに 2 つのレプリカを作成します。
既存のインデックスのnumber_of_replicas設定を更新するには、 _settings API を使用できます。
このコマンドは、 my_indexインデックスを更新して、プライマリ シャードごとに 3 つのレプリカを作成します。
number_of_replicas設定の影響
number_of_replicas設定は、Elasticsearchクラスターのパフォーマンスと復元力に大きな影響を与えます。考慮すべき重要なポイントは次のとおりです。
- データの冗長性と可用性:
number_of_replicasを増やすと、各シャードのコピーがさらに作成され、データの可用性が向上します。ノードに障害が発生した場合でも、Elasticsearch は残りのノード上のレプリカ シャードからデータを提供できます。 - 検索パフォーマンス:レプリカ シャードは読み取り要求を処理できるため、レプリカの数を増やすと、負荷がより多くのシャードに分散され、検索パフォーマンスが向上します。
- 書き込みパフォーマンス:ただし、各書き込み操作はシャードのすべてのコピーに対して実行する必要があります。したがって、
number_of_replicas大きくすると、書き込みごとに実行する必要がある操作の数が増えるため、インデックス作成のパフォーマンスが低下する可能性があります。 - ストレージ要件:レプリカが増えると、ストレージ容量も増えます。追加のレプリカを保存するのに十分な容量がクラスターにあることを確認する必要があります。
- ノード障害に対する耐性:クラスター内のノードの数を考慮して
number_of_replicasを設定する必要があります。number_of_replicasがノード数以上である場合、クラスターはデータ損失なしで複数のノードの障害を許容できます。
number_of_replicas の設定に関するベストプラクティス
最適なnumber_of_replicas設定は、システムの特定の要件によって異なります。ただし、一般的なベストプラクティスをいくつか示します。
- 単一ノード クラスターの場合、レプリカを保持する他のノードがないため、
number_of_replicas0 に設定する必要があります。 - マルチノード クラスターの場合、データの冗長性と高可用性を確保するために、
number_of_replicas少なくとも 1 に設定する必要があります。 - 検索パフォーマンスを優先する場合は、
number_of_replicasを増やすことを検討してください。ただし、書き込みパフォーマンスとストレージ要件とのトレードオフに留意してください。 - クラスターに追加のレプリカを保存するのに十分な容量があることを常に確認してください。




