Elasticsearch のインデックスチューニングは、性能(検索速度、書き込み速度、安定性)、
メモリ効率、容量効率を最大化するための重要な作業です。
特に “デフォルト設定のまま大量データを入れる” と、検索・集約が急に遅くなったり、クラスタが不安定になりがちです。
以下では、現場でよく使われる実践的なインデックスチューニング手法 を体系的に解説します。
1. シャードとレプリカの適正化(最重要)
(1) プライマリシャード数の決め方
原則:
1インデックスあたり シャード数を少なくする
シャードが多すぎると
JVMヒープを無駄に消費
オーバーヘッド増加
クラスタ不安定化
検索性能低下
よって、「多いほど良い」は間違いです。
(2) レプリカ数の決め方
高可用性:1(最も一般的)
読み取り性能重視:2以上
開発用途:0
2. マッピング(Mapping)の最適化
Mapping は性能に大きく影響します。
(1) 動的マッピング(dynamic)を禁止する
"dynamic": false
を基本とし、フィールド定義を明示する。
理由:
(2) 不要なフィールドを index しない
ログやJSON入力では余計なフィールドが大量に入ることが多い。
"index": false
or
"enabled": false
とすることで 検索対象外にして負荷軽減。
(3) keyword と text の誤用を避ける
text → 全文検索向け、トークナイズされる
keyword → 完全一致、集約用、ソート用
原則:
ログ・ID・タグは keyword
長文は text
不要な text は作らない
(4) 正しい analyzer の選択
日本語:kuromoji
英語:standard / whitespace
特殊用途:n-gram / edge-ngram
誤った analyzer は検索精度と速度を悪化させます。
3. インデックス設定のチューニング
(1) Refresh Interval を伸ばす
デフォルトは 1秒 (高頻度 refresh)
書き込み重視なら:
"refresh_interval": "30s"
あるいは bulk import 中だけ:
"refresh_interval": -1
にして refresh を無効化。
(2) index.translog.durability を async にする
書き込み性能向上(ただしクラッシュ時に最新変更が失われる可能性あり)
"index.translog.durability": "async"
(3) merge のチューニング(Luceneレベル)
大型環境では merge は性能に大きく影響。
例:スループット重視の設定(公式推奨の一例)
"index.merge.policy.max_merged_segment": "5gb","index.merge.scheduler.max_thread_count": 1
4. データ構造のチューニング
(1) doc_values の有無を制御
集約・ソート用の値が必要な keyword フィールドには有効だが、
長文 text フィールドでは不要。
"doc_values": false
でメモリ節約できる。
(2) フィールド数を制限する
大量のフィールドを持つと検索遅延が発生。
"index.mapping.total_fields.limit": 2000
などで制限可能。
(3) nested は必要なときのみ使う
nested は非常に重い。
巨大な array を無理に nested にしない。
5. ライフサイクル管理(ILM)を使う
大量ログ・時系列データでは Indices Lifecycle Management が有効。
例:
Hot:高速書き込み用
Warm:検索主体
Cold:滅多に使わない
Delete:一定期間後に削除
ILMにより:
が自動化される。
6. クエリのチューニング
(1) match_all の使用に注意
巨大インデックスで match_all は危険(膨大なスキャン)。
(2) 適切なフィルタを使う
filter はスコア計算なしで高速。
(3) track_total_hits: false
件数を正確に数えないことで高速化。
7. ハードウェア・OSレベルのチューニング
まとめ:最も効果のあるチューニング Top 5
シャード数を適正化(1〜3シャード推奨)
mapping を明示し、不要なフィールドは index しない
refresh_interval を延長( bulk 時は -1)
keyword/text の選択を厳密にする
ILM を使い運用を自動化
実務的には、これらの調整だけで 検索速度が2〜10倍改善、
クラスタ安定性も大きく向上します。
この記事へのコメント