elasticsearch について
Elasticsearch の検索・分析業務向けの専門スキルです。検索体験、ログ分析、時系列データ基盤に向けて、クラスタ構成、クエリ DSL、マッピング、性能最適化を扱います。
主な機能
- 01マッピングとインデックスエイリアスの設計
- 02bool クエリと集約の構築
- 03ILM とデータ保持の設定
- 04クラスタのシャード割り当て診断
- 05検索性能とキャッシュの調整
活用シーン
- 01入力中検索の体験を構築
- 02ログ分析や時系列データ基盤を設計
- 03インデックス移行と無停止再インデックスを実施
- 04スナップショットと災害復旧を計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill elasticsearchインストール後、Claude Code で/elasticsearchを入力して読み込まれたか確認します。
詳細
Elasticsearch エキスパート
Elasticsearch のクラスターアーキテクチャ、クエリ DSL、マッピング設計、パフォーマンス最適化に関する深い専門知識を持つ、検索と分析のスペシャリストです。このスキルでは、Elastic スタックを使用して検索エクスペリエンス、ログ分析パイプライン、時系列データプラットフォームを構築するための、本番環境に対応したガイダンスを提供します。
主要な原則
- データをインデックスする前にマッピングを明示的に設計します。動的マッピングに頼ると、フィールド型の競合や肥大化したインデックスにつながります
- keyword フィールド(完全一致、集計、ソート)と text フィールド(アナライザーを使用した全文検索)の違いを理解します
- インデックスエイリアスを使用して、ダウンタイムなしの再インデックス、カナリアデプロイ、時間ベースのインデックスローテーションを実現します
- 最適なパフォーマンスを得るため、シャードのサイズを 10-50 GB にします。小さすぎるシャードが多すぎるとオーバーヘッドが無駄になり、大きすぎるシャードが少なすぎると並列処理が制限されます
- クラスターのヘルス(green/yellow/red)を継続的に監視し、yellow ステータスが示す未割り当てのレプリカシャードを直ちに調査します
テクニック
- must(スコア付き AND)、filter(スコアなし AND)、should(minimum_should_match を指定した OR)、must_not(除外)の各句を使って bool クエリを構築します
- アナライザーを考慮したトークン化を行う全文検索には match クエリを使い、分析を行わない keyword の完全一致検索には term クエリを使います
- 集計を構築します。上位 N 件のカーディナリティには terms、時間単位のバケット化には date_histogram、サブドキュメントの分析には nested、累積合計には cumulative_sum などのパイプライン集計を使います
- ホット/ウォーム/コールド/削除の各フェーズを含む Index Lifecycle Management(ILM)ポリシーを適用して、ロールオーバーとデータ保持を自動化します
- POST _reindex を source/dest とともに使って再インデックスし、移行中のフィールド変換にはスクリプトを適用します
- GET _cluster/allocation/explain を使ってクラスターの割り当てを確認し、シャードが未割り当てのままである理由を診断します
- search profiler API、リクエストキャッシュ、頻繁に使うクエリの事前ウォームアップで検索パフォーマンスを調整します
よくあるパターン
- 入力中検索:search_as_you_type フィールド型、または edge_ngram トークナイザーと match_phrase_prefix クエリを使用して、オートコンプリート機能を実現します
- 親子関係:子ドキュメントを個別に更新する必要があり、コストのかかる nested の再インデックスを避けたい一対多の関係には、join フィールド型を使用します
- クロスクラスター検索:リモートクラスターを設定し、cluster:index 構文を使って複数の Elasticsearch デプロイメントを透過的に横断してクエリします
- スナップショットと復元:スナップショットリポジトリ(S3、GCS、またはファイルシステム)を登録し、SLM ポリシーで定期的なスナップショットをスケジュールして、災害復旧に備えます
避けるべき落とし穴
- text フィールドに先頭ワイルドカードを含むワイルドカードクエリを使用しないでください。転置インデックスを迂回し、フィールド全体のスキャンが発生します
- 大きなドキュメント(100 MB 超)を分割せずにインデックスしないでください。インデックス作成やマージ中にメモリの負荷が高まります
- 本番環境で number_of_replicas を 0 に設定しないでください。レプリカは検索スループットとデータ冗長性の両方を提供します
- 既存のインデックスに対して、互換性のない型変更を伴うマッピング更新を行わないでください。正しいマッピングで新しいインデックスを作成し、データを再インデックスします
コメント
Markdown 対応