「検索を使う」から「検索を作る」へ
検索システムのニーズは多様であり、標準機能だけではすべてのユースケースをカバーすることはできません。業界特有の語彙処理ルール、業務ロジックのカスタマイズ、外部システムとの統合など、さまざまな要件があります。
これまでこうした要件はベンダーによる対応が必要でしたが、Easysearch 2.1.2 からは自分で実装できるようになりました。
Maven Central Repository への依存ライブラリのリリースにより、Easysearch のプラグイン開発機能が正式に利用可能となりました。これにより、Easysearch はブラックボックス製品ではなく、拡張性とカスタマイズ性を持つ検索プラットフォームとなっています。公式インターフェースに基づいて独自のプラグインを開発し、ネイティブな機能と同様に活用できます。
プラグインの機能
Easysearch は検索システムの主要なプロセスに対応する3つの拡張ポイントを提供します:
1. アナライザープラグイン(AnalysisPlugin)
カスタムトークンイニシャライザ、トークンフィルタ、文字フィルタを定義できます。以下のような用途に適しています:
- エコマーサーにおける商品規格の解析
- 医療や法務分野における専門用語の分かち書き
- 特殊記号やスペースの正規化
登録後はインデックス設定で通常のアナライザーと同じように使用可能です。
2. REST/API プラグイン(ActionPlugin)
カスタムHTTPエンドポイントを追加できます。次のような用途に適しています:
- 業務ロジックをラップし、簡略化されたAPIを公開
- 社内認証システムや監視システムとの連携
- プラグイン自身の管理インターフェース(例:状態確認)の提供
3. インジェストプラグイン(IngestPlugin)
ドキュメントの保存前にフィールド変換を行うことができます。以下のような用途に適しています:
- 業務ルールに基づく派生フィールドの計算
- データの標準化(日付形式の統一、大文字小文字変換)
- テキスト抽出やメタデータ生成
5分で始めよう
公式テンプレートリポジトリを用意しており、クローンから実行まで数行のコマンドで始められます:
# テンプレートのクローン
git clone https://github.com/infinilabs/easysearch-plugin-template.git my-plugin
cd my-plugin
# パッケージ名やクラス名の変更、ロジックの作成
# ...
方法1:開発・デバッグ —— 直接実行
# プラグインのビルドと起動
./gradlew run
# プラグインの確認
curl -s "http://localhost:9200/_cat/plugins?v" | grep my-plugin
方法2:ビルド後に外部クラスタにインストール
# プラグインのビルド
./gradlew build
# Easysearch へのインストール
bin/easysearch-plugin install file:///$(pwd)/build/distributions/my-plugin-0.1.0.zip
# 起動と確認
bin/easysearch
curl -s "http://localhost:9200/_cat/plugins?v" | grep my-plugin
詳細な開発ガイドはプラグイン開発ドキュメントをご参照ください。
設計思想
Easysearch のプラグインシステムは以下の3つの原則に基づいて設計されています:
段階的な拡張 —— 最初は単純な Plugin クラスから始め、必要に応じて AnalysisPlugin や ActionPlugin などのインターフェースを実装することで、すべてのAPIを一度に学ぶ必要はありません。
ネイティブと同等の扱い —— プラグインで登録されたアナライザーやハンドラーは、システムのネイティブコンポーネントとまったく同じ方法で使用でき、ユーザーは実装の詳細を意識する必要がありません。
バージョン互換性 —— プラグインの読み込み時に easysearch.version がチェックされ、バージョンが一致しない場合はロードを拒否し、実行時エラーを防ぎます。
プラグインからエコシステムへ
プラグイン開発は技術的能力の開放にとどまらず、製品理念の転換でもあります。
開発したプラグインは GitHub Releases に公開し、URL を通じて直接インストールすることが可能です:
bin/easysearch-plugin install https://github.com/yourname/my-plugin/releases/download/v0.1.0/my-plugin-0.1.0.zip
コミュニティからの貢献も歓迎しています。汎用的なプラグインのアイディアがあれば、ぜひお気軽にご相談ください。
まとめ
検索システムの最後の1kmを、最も理解しているのは業務開発者です。
Easysearch 2.1.2 のプラグイン開発機能により、検索システムの「最後の1km」を自由に制御できるようになりました。「検索を使う」から「検索を作る」へと、あなたの検索システムを本当に「あなたに合わせて」カスタマイズしましょう。