これらのテクノロジーの主なアーキテクチャ上の違いは何ですか?
また、一般的にそれぞれに適したユースケースは何ですか?
質問の範囲が修正されたので、これに関しても何か追加するかもしれません。
利用可能なApache SolrとElasticSearchの比較は多数あるので、私が最も役立つと思ったものを参照します。つまり、最も重要な側面をカバーします。
Bob Yoplait はすでに、kimchy の回答をElasticSearch、Sphinx、Lucene、Solr、Xapian にリンクしています。どの用途にどれが合う?これは、彼が先に進んで ElasticSearch を作成した理由をまとめたものです。ElasticSearchは、彼の意見では、 Solr と比較してはるかに優れた分散モデルと使いやすさを提供します。
Ryan Sonnek のRealtime Search: Solr vs Elasticsearchは洞察力に富んだ分析/比較を提供し、Solr から ElasticSeach に切り替えた理由を説明しています。彼はすでに満足している Solr ユーザーですが、これを次のように要約しています。
Solrは、標準的な検索アプリケーションを構築する際の最適な武器かもしれませんが、Elasticsearchは、最新のリアルタイム検索アプリケーションを作成するためのアーキテクチャを使用して、Solr を次のレベルに引き上げ ます。パーコレーションは、Solr を水面から吹き飛ばすエキサイティングで革新的な機能です。Elasticsearch はスケーラブルでスピーディーで、 との統合が夢のようです。Adios Solr、あなたと知り合えてよかった。[鉱山を強調]
ElasticSearch に関するウィキペディアの記事では、評判の高いドイツの iX マガジンからの比較を引用し、長所と短所をリストしています。
利点:
- ElasticSearch が配布されています。個別のプロジェクトは必要ありません。レプリカもほぼリアルタイムで、「プッシュ レプリケーション」と呼ばれます。
- ElasticSearch は、Apache Lucene のほぼリアルタイムの検索を完全にサポートしています。
- マルチテナンシーの処理は特別な構成ではなく、Solr ではより高度なセットアップが必要です。
- ElasticSearch はゲートウェイの概念を導入し、完全バックアップを容易にします。
短所:
主要な開発者は 1 人のみ[現在のElasticsearch GitHub 組織によると、適用されなくなりました。そもそも、かなり活発なコミッター ベースが存在します]自動ウォーミング機能なし[新しいIndex Warmup APIに従って適用されなくなりました]
これらはまったく異なるユースケースに対応するまったく異なるテクノロジーであるため、意味のある方法で比較することはできません。
Apache Solr - Apache Solr は、ファセット、スケーラビリティなどの追加機能を備えた、使いやすく高速な検索サーバーで Lucene の機能を提供します。
Amazon ElastiCache - Amazon ElastiCache は、クラウド内のインメモリ キャッシュのデプロイ、操作、スケーリングを容易にするウェブ サービスです。
[鉱山を強調]
おそらく、これは次の 2 つの関連するテクノロジと何らかの形で混同されている可能性があります。
ElasticSearch - Apache Lucene の上に構築された、オープン ソース (Apache 2) の分散型 RESTful 検索エンジンです。
Amazon CloudSearch - Amazon CloudSearch は、クラウド内の完全マネージド型の検索サービスであり、高速で高度にスケーラブルな検索機能をアプリケーションに簡単に統合できます。
SolrとElasticSearchのオファリングは一見非常に似ているように見えますが、どちらも同じバックエンド検索エンジン、つまりApache Luceneを使用しています。
Solrは古く、非常に用途が広く、成熟しており、それに応じて広く使用されていますが、ElasticSearchは、 Solrで対処するのが難しい最新のクラウド環境でのスケーラビリティ要件に関するSolrの欠点に対処するために特別に開発されました。
そのため、 ElasticSearchと最近導入されたAmazon CloudSearchを比較するのがおそらく最も役立つでしょう(紹介記事「月額 100 ドル未満で 1 時間で検索を開始する」を参照)。どちらも原則として同じユースケースをカバーすると主張しているからです。
上記の回答のいくつかは、現在は少し古くなっています。私の観点から言えば、私は Solr (クラウドと非クラウド) と ElasticSearch の両方を日常的に使用しています。興味深い違いがいくつかあります。
Solr と ElasticSearch のトピックの詳細については、https: //sematext.com/blog/solr-vs-elasticsearch-part-1-overview/ を参照してください。これは、直接的かつ中立的な Solr と ElasticSearch の比較を行う Sematext からの一連の投稿の最初の投稿です。開示:私はSematextで働いています。
Apache Solr の歴史は長いので、Solr の強みの 1 つはそのエコシステムにあると思います。さまざまな種類のデータと目的に対応する多数の Solr プラグインがあります。
下から上に次のレイヤーでプラットフォームを検索します。
参考記事:エンタープライズサーチ
上記のリンクにはすべてメリットがあり、過去 15 年間さまざまな Lucene 検索エンジンに「さらされた」言語学者として、私は過去に大きな恩恵を受けてきましたが、Python ではエラスティック検索の開発が非常に高速であると言わざるを得ません。そうは言っても、一部のコードは直感的ではないと感じました。そこで、オープンソースの観点から ELK スタックの 1 つのコンポーネントである Kibana にアクセスしたところ、Kibana で Elasticsearch のやや不可解なコードを非常に簡単に生成できることがわかりました。また、Chrome Sense のクエリを Kibana にプルすることもできました。Kibana を使用して es を評価すると、さらに評価が高速化されます。他のプラットフォームで実行するのに何時間もかかったものは、elasticsearch (RESTful インターフェイス) 上の JSON in Sense で、最悪の場合 (最大のデータ セット) で数分で実行されました。せいぜい数秒で。Elasticsearch のドキュメントは 700 ページ以上ありますが、通常は SOLR や他の Lucene ドキュメントで解決されるはずの質問に答えていませんでした。明らかに分析に時間がかかりました。また、ファセットを新しいレベルに引き上げたエラスティック検索の集計を確認することもできます。
全体像: データ サイエンス、テキスト分析、または計算言語学を行っている場合、elasticsearch には、情報検索分野でうまく革新しているように見えるいくつかのランキング アルゴリズムがあります。TF/IDF アルゴリズム、テキスト頻度/逆ドキュメント頻度を使用している場合、elasticsearch は、BM25、ベスト マッチ 25、およびその他の関連性ランキング アルゴリズムを使用しても、この 1960 年代のアルゴリズムを新しいレベルに拡張します。したがって、単語、フレーズ、または文をスコアリングまたはランク付けする場合、elasticsearch はこのスコアリングをオンザフライで行います。数時間かかる他のデータ分析アプローチの大きなオーバーヘッドはなく、elasticsearch のもう 1 つの時間節約になります。es を使用すると、集計からのバケット化のいくつかの利点と、リアルタイムの JSON データ関連性スコアリングおよびランキングを組み合わせることで、優れた組み合わせを見つけることができます。
注:上記の集計に関する同様の議論を見ましたが、集計と関連性スコアリングについては見ませんでした-重複についてお詫びします. 開示:私はelasticのために働いておらず、elasticsearchで慈善活動をしない限り、別のアーキテクチャパスのために、近い将来彼らの優れた仕事から利益を得ることができません。これは悪い考えではありません.
すでに SOLR を使用している場合は、そのまま使用してください。起動している場合は、エラスティック検索に進みます。
SOLR では最大の主要な問題が修正されており、かなり成熟しています。