株式会社renue
renueについて
renueは、AIで業務を実装する会社です
AIコンサルティングから図面AI・広告運用エージェント・コールセンターAIまで、実際に動いているサービスをご覧いただけます。renueが何をしている会社か、まずはサービス一覧からご確認ください。
Elasticsearchとは?
Elasticsearch(エラスティックサーチ)は、Apache Luceneを基盤としたオープンソースの分散型全文検索エンジンです。オランダのElastic社が開発・メンテナンスを行い、2010年に初リリースされました。テキスト・数値・地理空間データなど多様な形式のデータをリアルタイムに格納・検索・分析できる点が特徴です。
現在では単なる検索エンジンにとどまらず、ベクトル検索・AI/ML連携・セキュリティ分析まで対応する統合データプラットフォームへと進化しています。大規模ECサイトのサイト内検索、ログ分析基盤、セキュリティ監視(SIEM)、AIを活用したRAGシステムなど、幅広い用途で導入されています。
全文検索の仕組み:転置インデックスとは
Elasticsearchの全文検索の根幹を支えるのが転置インデックス(Inverted Index)です。通常のデータベースでは「ドキュメントID → テキスト内容」という方向でデータを管理しますが、転置インデックスでは「単語 → ドキュメントIDリスト」という逆引き構造を事前に作成します。
インデックス作成の流れ
- テキスト解析(Analyzer):入力テキストをトークナイザーが単語(トークン)に分割し、フィルターで正規化(小文字化・ストップワード除去・ステミングなど)を行います。日本語の場合はanalysis-kuromojiなどの形態素解析プラグインを利用します(セルフホストでは全ノードに導入して再起動、Elastic Cloud Hostedではデプロイごとに有効化が必要)。
- 転置インデックスへの登録:各トークンに対し、そのトークンが出現するドキュメントID・出現位置・出現頻度を記録します。
- スコアリング(BM25):検索クエリを受け取ると、クエリのトークンに対して転置インデックスを参照し、TF-IDFを改良したBM25アルゴリズムで各ドキュメントの関連スコアを算出してランキングします。
シャードとクラスタによる分散処理
Elasticsearchはデータをシャードという単位に分割し、複数のノードに分散して格納します。検索クエリは全シャードに並列配信され、各ノードで部分的な検索結果を集約して最終結果を返します。この仕組みにより、データ量・クエリ量が増加しても水平スケールアウトで対応できます。
- プライマリシャード:データの書き込み先となる本体シャード
- レプリカシャード:プライマリのコピー。障害時のフェイルオーバーと読み取りスループット向上に使用
ELKスタック(Elastic Stack)とは
Elasticsearchは単独でも利用できますが、実際の運用では以下の3つのOSSと組み合わせたELKスタック(Elastic Stack)として利用されることが多いです。
| ツール | 役割 |
|---|---|
| Elasticsearch | データの格納・全文検索・集計エンジン |
| Logstash | 各種ソースからデータを収集・変換してElasticsearchへ送るETLパイプライン |
| Kibana | Elasticsearch上のデータを可視化するダッシュボード・UI |
| Beats | 軽量データシッパー。サーバーやコンテナからログ・メトリクスを収集 |
主な活用ケース
1. ECサイト・サービスのサイト内検索
商品名・説明文・カテゴリ・タグなどの複数フィールドをまたいだ多フィールド全文検索が可能です。オートコンプリート、スペルミス補正(Fuzzy検索)、同義語辞書対応など、ユーザー体験を高める機能が充実しています。
2. ログ分析・オブザーバビリティ
アプリケーションログ・インフラメトリクス・トレースデータをリアルタイムに取り込み、異常検知やパフォーマンス監視に活用します。Elastic Observabilityとして製品化されており、APM(Application Performance Monitoring)との統合も容易です。
3. セキュリティ情報・イベント管理(SIEM)
複数ソースのセキュリティイベントを集約・相関分析し、脅威の検出・調査・対応を自動化します。Elastic SIEMとして、セキュリティ監視の基盤として採用実績が増えています。
4. 地理空間検索
Geo Pointフィールドを使ったバウンディングボックス検索や距離ソートにより、地図上のPOI(Points of Interest)検索や店舗近傍検索を実現できます。
5. 社内ナレッジベース・ドキュメント検索
社内の設計書・議事録・マニュアル等をインデックス化し、横断検索を実現します。AI(RAG)と組み合わせることで、単なるキーワード検索を超えた意味理解型の社内Q&Aシステムを構築できます。
AI/MLとの組み合わせ:ベクトル検索とRAG
2025〜2026年現在、Elasticsearchの最注目機能がベクトル検索(kNN検索)です。テキストや画像をベクトル(数値の配列)に変換し、意味的な類似度に基づいて検索できます。
ベクトル検索の仕組み
ElasticsearchはHNSW(Hierarchical Navigable Small World)グラフを使った近似最近傍探索(ANN)を採用しており、高次元ベクトルを高速に検索できます。
- テキストをEmbeddingモデル(OpenAI、Cohereなど)でベクトル化
dense_vectorフィールドとしてElasticsearchに格納- 検索クエリも同じモデルでベクトル化し、コサイン類似度でkNN検索
ハイブリッド検索(BM25×ベクトル検索)
キーワード検索(BM25)とベクトル検索を組み合わせたハイブリッド検索が、現在のベストプラクティスとされています。両者の検索結果をRRF(Reciprocal Rank Fusion)で統合する方法が代表的です。RRFはスコアの値そのものではなく各検索結果内の順位に基づいて融合するため、尺度の異なるBM25とベクトル検索を重み調整なしで組み合わせられ、検索精度の向上が期待できます。
RAGシステムへの応用
RAG(Retrieval-Augmented Generation)では、LLMが回答を生成する前にElasticsearchで関連ドキュメントを検索・取得します。大量のFAQドキュメントをベクトル化してElasticsearchに格納し、類似度検索で必要な情報だけをLLMに渡すアーキテクチャが採用されています。
- ドキュメントを数百〜1000文字程度のチャンクに分割してベクトル化
- クエリのベクトルと各チャンクのコサイン類似度を計算して上位k件を取得
- リランキングで精度をさらに向上させてLLMへ渡す
Elastic Learned Sparse Encoder(ELSER)
Elasticが独自開発したスパースベクトルモデルです。重要な単語に対応するスパースなベクトルを生成することで、ドメイン固有語や専門用語にも対応したセマンティック検索を実現します。外部のEmbedding APIなしでElasticsearchだけでセマンティック検索を完結させたい場合に有効です。ただし公式ドキュメントではELSERは英語の文書・クエリ向けとされ、日本語など英語以外では多言語対応のE5モデルの利用が推奨されています。利用にはセマンティック検索に対応したサブスクリプション(またはトライアル)が必要で、1フィールドあたり先頭512トークンまでが処理対象です。
Elasticsearchの導入ステップ
Step 1:インフラ選択
- Elastic Cloud(推奨):Elastic社のフルマネージドSaaS。AWS・Azure・GCP上で動作。
- セルフホスト(Docker/Kubernetes):オンプレミスやVMに自前でデプロイ。コスト最適化が可能(Dockerでの起動・接続確認は公式手順を参照)。
- クラウドマーケットプレイス経由:AWS・Azure・Google CloudのマーケットプレイスからElastic Cloudを契約して利用。なお、Amazon OpenSearch Serviceは別製品であるOpenSearchと、旧Elasticsearch OSS(7.10までのレガシー版)を提供するマネージドサービスで、Elastic社が提供する現行のElasticsearchの利用経路ではない点に注意。
Step 2:ローカル環境での起動(Docker)
# 学習用のため公開ポートは127.0.0.1に限定(8.17.0はバージョン指定の例)
docker run -d --name elasticsearch -e "discovery.type=single-node" -p 127.0.0.1:9200:9200 docker.elastic.co/elasticsearch/elasticsearch:8.17.0
# 起動完了後に実行。8.xは認証とTLSが自動で有効になる(無効化しない)。elasticユーザーのパスワードを再発行し、CA証明書を取得
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
docker cp elasticsearch:/usr/share/elasticsearch/config/certs/http_ca.crt .
# 接続確認(-u elastic とするとパスワードを対話入力できる)
curl --cacert http_ca.crt -u elastic https://localhost:9200
# Step 3で使う日本語解析プラグイン(analysis-kuromoji)を導入し、ノードを再起動
docker exec elasticsearch bin/elasticsearch-plugin install --batch analysis-kuromoji
docker restart elasticsearch
Step 3:インデックス作成とマッピング定義
PUT /products { "mappings": { "properties": { "title": { "type": "text", "analyzer": "kuromoji" }, "price": { "type": "float" }, "embedding": { "type": "dense_vector", "dims": 1536 } } } }
Step 4:データ投入・検索クエリの実行
POST /products/_doc { "title": "AIコンサルティングサービス", "description": "AIシステムの設計・構築・運用を一貫サポート" }
Step 5:Kibanaで可視化・監視
Kibana DiscoverでドキュメントをブラウズしつつDashboardでインデックスのメトリクス(ドキュメント数・シャードサイズ・クエリレイテンシ等)を可視化します。ML機能を使えば異常検知(Anomaly Detection)の設定も可能です。
Elasticsearchのライセンスと注意点
2021年にElastic社はライセンスをApache 2.0からSSPL(Server Side Public License)とElastic License 2.0のデュアルライセンスに変更し、2024年9月にはOSI承認のオープンソースライセンスであるAGPLv3を第3の選択肢として追加しました。既定の配布物はElastic License 2.0で提供され、内部利用・開発用途ではBasic(無料)範囲の機能を引き続き無償で利用できます。ただし全機能が無料ではなく、機械学習やELSERによるセマンティック検索など一部機能は有料サブスクリプションが必要で、第三者へのホスト型・マネージドサービスとしての提供などはElastic License 2.0で制限されています。AWSはこの変更を受けてApache 2.0のフォーク版OpenSearchを開発・維持しています。
