高速検索エンジン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 がおすすめです。
他にも類似文書を検索する機能や、ファジー検索、ファセット機能などがあります。
次回は、類似文書を検索して関連記事をレコメンドする機能を試してみたいと思います。
-
お問い合わせ
SiTest の導入検討や
他社ツールとの違い・比較について
弊社のプロフェッショナルが
喜んでサポートいたします。 -
コンサルティング
ヒートマップの活用、ABテストの実施や
フォームの改善でお困りの方は、
弊社のプロフェッショナルが
コンサルティングいたします。
今すぐお気軽にご相談ください。
今すぐお気軽に
ご相談ください。
(平日 10:00~19:00)
今すぐお気軽に
ご相談ください。
0120-315-465
(平日 10:00~19:00)
グラッドキューブは
「ISMS認証」を取得しています。
認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業
「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。