高速検索エンジンElasticSearchを使ってみた!(其の1) | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

高速検索エンジンElasticSearchを使ってみた!(其の1)

キュレーションサイトなどで、サイト内の記事を全文検索する要望は、ほぼ必須かと思われます。しかし、100万件超のデータに対してRDBで「like ‘%xxxx%’」などでは、かなり厳しいレスポンスタイムになると思われます。ということで、全文検索エンジンの登場です。

全文検索エンジンは古くからいろいろありますが、ElasticSearchの特徴はその名の通りelasticにスケールアウトが容易なところが挙げられます。
他の全文検索エンジンで有名どころだとSolrなどもあり、中身のライブラリは、どちらもLucene API を利用しております。

しかし、スケールアウトの面ではElasticSearchが秀でているようです。
そこで、今回はElasticSearchを使ってみて、その速さを体験してみました。

  • ■ 試してみよう

弊社では、「SPAIA」という従来のスポーツニュースメディアとは違い、スポーツデータをAIによって解析し、新しいスポーツの見方や楽しみ方が実現できることに加え、弊社独自で編集部が取材・編集したオリジナルコンテンツを提供しています。
このスポーツコラム記事に対して、検索を試してみます。

キーワドとしては「相撲」、対象フィールドはコラム記事が格納されているbodyフィールドになります。

弊社では、データベースとして、主にMongoDBを利用しています。
まず最初に、MongoDBで試してみましょう。

time mongo main --eval 'db.posts.find( { body:/相撲/ } )'

MongoDBでのレスポンスタイムは、以下の通りです。

real   0m1.573s
user  0m0.116s
sys   0m0.028s

次にElasticSearchで試してみましょう。
ターミナルからcurl コマンドでREST APIに 検索を実行できます。
クエリもレスポンスもjson形式になります。

time curl -XGET 'http://localhost:9201/p_index/p_type/_search?pretty=true' -d '
    {
        "query" : {
                "simple_query_string" : {
                        "query": "相撲",
                        "fields": ["body"]              
                        }
        }
    }'

ElasticSearchでのレスポンスタイムは、以下の通りです。

real   0m0.155s
user  0m0.005s
sys   0m0.005s

MongoDBに対しての全文検索のレスポンスタイムは、およそ10倍ほどの差があります。
ElasticSearch爆速でしたね!

■ 最後に

このように全文検索の結果の違いを見てみると、ElasticSearchを利用するとお手軽に実現出来てしまいます。
全文検索システムを実装するには、ElasticSearch がおすすめです。
他にも類似文書を検索する機能や、ファジー検索、ファセット機能などがあります。
次回は、類似文書を検索して関連記事をレコメンドする機能を試してみたいと思います。

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

グラッドキューブは
「ISMS認証」を取得しています。

認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業

「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。

いますぐ無料で
お試しください。

SiTest の革新的な機能を
お試しいただけます。
利用規約

お名前【必須】
メールアドレス【必須】
電話番号【必須】