5 つのシャードと 2 つのレプリカを持つように構成された 2 ノードの Elasticsearch クラスターがあります。~2M レコードの db テーブルにインデックスを付けた後、対応するキャッシュの下に 124 個のセグメントが生成されました。この数は大きすぎます。インデックスを追加すると、nofiles のハード リミットに簡単に達してしまうのではないかと心配しています。
インデックスあたりのセグメント数を減らす方法はありますか? ありがとう
5 つのシャードと 2 つのレプリカを持つように構成された 2 ノードの Elasticsearch クラスターがあります。~2M レコードの db テーブルにインデックスを付けた後、対応するキャッシュの下に 124 個のセグメントが生成されました。この数は大きすぎます。インデックスを追加すると、nofiles のハード リミットに簡単に達してしまうのではないかと心配しています。
インデックスあたりのセグメント数を減らす方法はありますか? ありがとう
Elasticsearch でマージ ポリシーを制御できます。マージ設定は、Update Index Settings APIを使用して動的に更新できます。たとえば、index.merge.policy.segments_per_tier
値を 10 未満に減らすと、各層のセグメント数が減り、その結果、セグメントの総数が減ります。
Optimize APIを使用して手動でマージを強制することもできます。例えば:
$ curl -XPOST 'http://localhost:9200/your-index/_optimize?max_num_segments=1'
次のコマンドを使用して、セグメントの最大数を減らすことができます
$ curl -XPOST 'http://localhost:9200/_forcemerge?max_num_segments=5'
Windows の場合は、逆コンマを削除する必要があります。