mcpField
E
elasticsearch

elasticsearch

github.com/rightnow-aiデータ・データベース18.2k101 回インストール24 週間前に更新
リポジトリ

elasticsearch について

Elasticsearch の検索・分析業務向けの専門スキルです。検索体験、ログ分析、時系列データ基盤に向けて、クラスタ構成、クエリ DSL、マッピング、性能最適化を扱います。

主な機能

  1. 01マッピングとインデックスエイリアスの設計
  2. 02bool クエリと集約の構築
  3. 03ILM とデータ保持の設定
  4. 04クラスタのシャード割り当て診断
  5. 05検索性能とキャッシュの調整

活用シーン

  1. 01入力中検索の体験を構築
  2. 02ログ分析や時系列データ基盤を設計
  3. 03インデックス移行と無停止再インデックスを実施
  4. 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 に設定しないでください。レプリカは検索スループットとデータ冗長性の両方を提供します
  • 既存のインデックスに対して、互換性のない型変更を伴うマッピング更新を行わないでください。正しいマッピングで新しいインデックスを作成し、データを再インデックスします

コメント