42518


Elasticsearchを使うべきときがいつかわかりません。  
Elasticsearchが”全文検索エンジン”であると調べたら出てきました。しかし、全文検索がSQLでクエリを発行して該当データを取ってくるのとどう違うのかがわかりません。Elasticsearchはいつ使うべきもので、全文検索とはどのようなものなのでしょうか？


CC BY-SA 3.0
2018-03-20T06:33:12.757
42513
2018-03-20T07:54:58.513
27814
question
elasticsearch
Elasticsearchを使うべきときはいつなのか


「全文検索」や「Elasticsearch」について、Googleなどにキーワードを打ち込んで検索されたでしょうか？

もし検索をされたなら、それが世界中のWebドキュメントに対する全文検索です。  
すなわち全文検索とは、特定の範囲(社内ドキュメントやプロジェクトのソースコード)のドキュメント全文を対象にキーワード検索をするための仕組みです。

もちろんすべての文書がデータベースにプレーンテキスト形式で格納されている環境であれば、SQLクエリで全文検索の代用も可能ですが、ファイルサーバから特定のキーワードを文書に含む最新のpdfをSQLクエリで取得することはできません。

Elasticsearchを使うべきときとは、社外秘の共有ファイルやPC内のドキュメントに上記のようなファイル検索を行いたい(そして社内で公開したい)時です。

後は蛇足です。

ElasticsearchやHyper
Estraierなどの全文検索エンジンは、文書の中身を形態素解析して保存することで、いわゆるDBにおけるインデックスのようにキーワード検索を高速化しています。  
そのため、大量の文書から特定のファイルを見つけ出したいときには、全ファイルを横断的に検索するより高速に結果を返すことができます。

また、全文検索エンジンそのものを一般人が使うにはUIが分かりにくいなどの理由から、Elasticsearchという検索エンジンには、Fessという全文検索サーバーからアクセスし、利用者はFessで検索するという利用方法も一般的です。

ややこしくなってきますが、Elasticsearch関連製品の総称としてElastic Stackがあります。  
例えばそのうちのKibanaは、検索データのグラフ化など統計としても使えますので、Elasticsearchを使うべきときは、必ずしも全文検索用途に限らない可能性があります。


CC BY-SA 3.0
2018-03-20T07:31:15.607
42518
2018-03-20T07:31:15.607
9820
42513
answer


「使うべきとき」というのは特にありません。「使いたいとき」に使う感じです。

たとえば
RDBで大量データの検索が遅い場合に、検索エンジンを入れるとメリットを感じられます。ランキングページとか、新着情報とか、大量のデータをプロットするダッシュボードとか、にも応用できるので
使いみちは様々です。

また、規模が大きくなるとサーバー自身を強化しなくてはいけませんが、RDBに比べてElasticsearchのスケールアウトは簡単です。

デメリットは RDBとは別にサーバーが必用なのでサーバーが増え、運用管理のコストが増える事、学習コストがそれなりに掛かることだと思います。

Elasticsaerchの事例はインターネットを検索すればたくさん出てきますので、「使いたい」と思った時に 使ってみてはどうでしょうか。


CC BY-SA 3.0
2018-03-20T07:54:58.513
42520
2018-03-20T07:54:58.513
5008
42513
answer