web-dev-qa-db-ja.com

ElasticSearchとSQL全文検索

プロジェクトで全文検索を使用したい... ElasticSearchとSQL全文検索の違いは何ですか?

または

sQL全文検索がエラスティックよりも優れている(悪い)のはなぜですか?

ドキュメント、プレゼンテーション、スキーマ...

22
Adam Bremen

「より良い」と定義する... SQL全文検索を機能させるのはかなり簡単です(インデックス作成とクエリ)-しかし、ペナルティがあります:

  • インデックスの作成方法(インデックスキーとは何か、レクサー/ステマーなどとは何かなど)を制御することはほとんどありません(事実上ありません)。
  • sQLサーバー上で実行されます-これは通常、最もスケーラビリティの低いインフラストラクチャです

ElasticSearchにはさらに多くの作業が必要です。ノードの専用クラスターをセットアップして維持する必要があります。次に、実際のインデックス操作を実行するコードを提供する必要があります。これには、変更ログ(新しい/編集されたデータの処理)から機能するスケジュールされたジョブが含まれる場合があります。インデックス付き;同様に、クエリの作成にもさらに時間をかける必要があります。ただし、インデックスとクエリ、およびスケーラビリティ(クラスターは必要なサイズにすることができます)を細かく制御できます。それが役立つ場合、Stack OverflowはSQL全文検索で育ち、制限(機能とパフォーマンスの両方)が法外なものであることが判明したときにElasticSearchに移行しました。

39
Marc Gravell

答えは、達成しようとしている目標と、それを達成するために必要なリソースによって異なります。 SQLサーバーの全文検索は管理者が少なくなりますが、機能が制限されます。エラスティックサーチは、スペクトルの反対側にあります。

SQLサーバー全文検索:

  • データが大幅に増加していない場合やスキーマが時間の経過とともに変化していない場合は、効率的であることがわかります。
  • 維持するための労力が少なくて済み、学習曲線が少なくて済みます/新しい能力の必要性

Elasticsearch:

  • マスターデータベースに頻繁な増分更新(logstashおよびその他の代替手段)がある場合のデータ取り込みの必要性
  • 水平方向のスケーリングが向上
  • 高度な機能を使用して、非常に大きなデータセット(ルーティングなど)のパフォーマンスを向上させる機能
1
Amine Karmouche