この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 7839|答える: 0

検索エンジンの選択:Elasticsearch vs Solr

[リンクをコピー]
掲載地 2018/12/11 13:42:36 | | | |
検索エンジン選択研究文書

Elasticsearchの紹介*


Elasticsearchはリアルタイム分散検索および分析エンジンです。 これにより、これまで以上に大規模なデータを高速に処理できます。

全文検索、構造化検索、分析に使え、もちろんこれらすべてを組み合わせることも可能です。

Elasticsearchは、全文検索エンジンApache Lucene™を基盤にした検索エンジンであり、現在利用可能な最も高度で効率的なフル機能を備えたオープンソース検索エンジンフレームワークと言えます。

しかしLuceneはあくまでフレームワークであり、その機能を十分に活用するにはJAVAを使い、Luceneをプログラムに統合する必要があります。 仕組みを理解するには多くの学習が必要で、Luceneは本当に複雑です。

ElasticsearchはLuceneを内部エンジンとして使用していますが、全文検索に使う場合は、複雑なLuceneの動作原理を理解しなくても統一APIを使うだけで十分です。

もちろん、ElasticsearchはLuceneのように単純ではなく、全文検索機能を含むだけでなく、以下のタスクも実行できます。

  • 分散型リアルタイムファイルストレージとインデックス化により、すべてのフィールドが検索可能になります。
  • リアルタイム分析を備えた分散型検索エンジン。
  • 数百台のサーバーにスケールし、構造化データや非構造化データを処理することができます。

多くの機能が一つのサーバーに統合されているため、クライアントやお好みのプログラミング言語を通じてESのRESTful APIと簡単に通信できます。

Elasticsearchの使い始めは非常に簡単です。 多くの非常に合理的なデフォルト設定が付属しており、初心者が始めたばかりの複雑な理論に直面するのを避けられる良い方法となっています。

インストール済みですぐに使える状態で、学習コストも少なく非常に生産的です。

学ぶにつれて、Elasticsearchのより高度な機能を活用でき、エンジン全体を柔軟に設定することも可能です。 ご自身のニーズに合わせてElasticsearchをカスタマイズできます。

ユースケース:

  • ウィキペディアはElasticsearchを使って全文検索やキーワードのハイライト、さらには「入力しながら検索」や「意味がわかりました」などの検索提案も行っています。
  • ガーディアンはElasticsearchを使って訪問者ログを処理し、編集者が記事に対する一般の反応をリアルタイムで知ることができます。
  • StackOverflowは全文検索とジオロケーション、関連情報を組み合わせて、より似たような質問の表現を提供します。
  • GitHubはElasticsearchを使って1300億行以上のコードを取得しています。
  • ゴールドマン・サックスは毎日、5TBのデータをインデックス化するためにこれを使い、多くの投資銀行も株式市場の動きを分析するために利用しています。

しかし、Elasticsearchは大企業向けだけでなく、DataDogやKloutのような多くのスタートアップが能力拡大にも役立っています。

Elasticsearch**の長所と短所:

価値

  • Elasticsearchは分散型です。 他のコンポーネントは不要で、配布はリアルタイムで行われ、「プッシュレプリケーション」と呼ばれます。
  • ElasticsearchはApache Luceneによるほぼリアルタイムの検索を完全にサポートしています。
  • マルチテナンシーの扱いには特別な設定は不要ですが、Solrはより高度な設定が必要です。
  • ElasticsearchはGatewayという概念を使ってバックアップを容易にしています。
  • 各ノードは均等なネットワーク構造を形成し、一部のノードが故障すると自動的に他のノードがその代わりに割り当てられます。


短所

  • 開発者は一人だけです(現在のElasticsearchのGitHub組織はそれ以上の存在で、すでにかなり活発なメンテナがいます)
  • 自動化が不十分で(現在の新しいIndex Warmup APIには適していません)


Solrについて*

Solr(発音は「solar」)は、Apache Luceneプロジェクト向けのオープンソースのエンタープライズ検索プラットフォームです。 主な機能には、全文検索、ヒットマーク、ファセット検索、動的クラスタリング、データベース統合、リッチテキスト(例:Word、PDF)の処理が含まれます。 Solrは非常にスケーラブルで、分散検索およびインデックスレプリケーションを提供します。 Solrは最も人気のあるエンタープライズ向け検索エンジンであり、Solr4はNoSQLのサポートも追加しています。

Solrは、Apache TomcatやJettyのようなサーブレットコンテナ上で動作する、Javaで書かれたスタンドアロンの全文検索サーバーです。 SolrはLucene Java検索ライブラリを全文インデックス作成と検索の中核として使用し、RESTに似たHTTP/XMLおよびJSON APIを備えています。 Solrの強力な外部設定機能により、Javaコーディングなしで多くの種類のアプリケーションに簡単に適応できます。 Solrはより高度なカスタマイズをサポートするプラグインアーキテクチャを持っています。

2010年にApache LuceneとApache Solrプロジェクトの合併により、両プロジェクトは同じApache Software Foundationの開発チームによって作成・実装されました。 技術や製品に関して言えば、Lucene/SolrやSolr/Luceneは同じです。

Solrの長所と短所:

価値

  • Solrには、より大きく成熟したユーザー、開発者、貢献者のコミュニティがあります。
  • HTML、PDF、Microsoft Officeソフトウェア形式、JSON、XML、CSVなどのプレーンテキスト形式など、複数の形式でのインデックス追加をサポートします。
  • ソルは比較的成熟して安定しています。
  • インデックス中の検索は考慮されず、その速度も速いです。


短所

  • インデックスが確立されると検索効率は低下し、リアルタイムインデックス検索効率は高くありません。


ElasticsearchとSolr*の比較

Solrは単に既存データを検索するときにより速いです。




リアルタイムでインデックスすると、SolrはIOブロッキングやクエリ性能の低下を引き起こしますが、Elasticsearchには明らかな利点があります。



データ量が増えるにつれて、Solrの検索効率は低下しますが、Elasticsearchは大きく変わりません。



まとめると、Solrのアーキテクチャはリアルタイム検索アプリケーションには適していません。

実世界の生産テスト*

下図は、SolrからElasticsearchに切り替えた後、平均クエリ速度が50倍に増加したことを示しています。




ElasticsearchとSolrの比較の概要

  • どちらも設置が簡単です。
  • Solrは分散管理にZookeeperを活用し、Elasticsearch自体は分散オーケストレーション管理を行っています。
  • Solrはより多くのデータフォーマットをサポートしていますが、ElasticsearchはJSONファイル形式のみをサポートしています。
  • Solrは公式にはより多くの機能を提供しますが、Elasticsearch自体はコア機能により重点を置き、高度な機能は主にサードパーティのプラグインによって提供されています。
  • Solrは従来の検索アプリケーションではElasticsearchよりも優れていますが、リアルタイム検索アプリケーションを扱う際にはElasticsearchに比べて効率がかなり劣ります。
  • Solrは従来の検索アプリケーションにとって強力なソリューションですが、Elasticsearchは新興のリアルタイム検索アプリケーションにより適しています。


その他のLuceneベースのオープンソース検索エンジンソリューション*


1: Luceneを直接使用してください

注:LuceneはJAVA検索ライブラリであり、それ自体は完全なソリューションではなく、追加の開発作業が必要です。

利点:多くの成功例を持つ成熟したソリューション。 急速に進展し続けるApacheのトップレベルプロジェクト。 大規模で活発な開発コミュニティ、多数の開発者がいます。 これは単なるクラスライブラリであり、カスタマイズや最適化の余地が十分にあります。簡単なカスタマイズを経れば、ほとんどの一般的なニーズに対応できます。 10億+回の検索に最適化されています。

短所:追加の開発努力が必要。 スケーリング、配信、信頼性などはすべて自分で実装する必要があります。 非リアルタイムでは、インデックス作成と検索の間に時間遅延があり、現在の「Lucene Near Real Time」検索方式のスケーラビリティはさらに向上する必要があります

ハイパーリンクのログインが見えます。

2:カッタ

注:Luceneベースの分散型、スケーラブル、障害耐性、ほぼリアルタイムの検索方式をサポートしています。

長所:Hadoopで箱から出して配布できる。 スケーリングとフォールトトレランス機構があります。

欠点:これは単なる検索ソリューションであり、インデックス作成は自分で実装する必要があります。 検索機能の観点では、最も基本的なニーズのみが実現されます。 成功例は少なく、プロジェクトの成熟度もやや低いです。 配布をサポートする必要があるため、複雑なクエリ要件に合わせるのは難しいでしょう。

ハイパーリンクのログインが見えます。

3: Hadoop 貢献/インデックス

注:分散インデックスソリューションであるMap/ReduceモードはKattaで使用可能です。

利点:分散インデックス作成とスケーラビリティ。

欠点:インデックス方式のみで、検索実装には問題がない。 バッチモードで動作しますが、リアルタイム検索のサポートはあまり良くありません。

ハイパーリンクのログインが見えます。

4: LinkedInのオープンソースソリューション

説明:Luceneをベースにしたさまざまなソリューションがあり、Zoieはほぼリアルタイム検索、Boboはファセット検索、Decomposerは機械学習アルゴリズム、Kratiは要約リポジトリ、Senseiはデータベーススキーマラッピングなどがあります

利点:分散型でスケーラブルかつ豊富な機能実装をサポートする実績あるソリューション

デメリット:LinkedIn会社と密接に結びつきすぎていること、カスタマイズ性が低いこと

ハイパーリンクのログインが見えます。

5:ルカンドラ

注:Luceneに基づく索引はカサンドラデータベースに存在します

長所:カサンドラの利点を参照

デメリット:カサンドラの欠点を参照してください。 また、これはあくまでデモであり、十分に検証されていません

ハイパーリンクのログインが見えます。

6:Hバセン

注:Luceneに基づくインデックスはHBaseデータベースに存在します

利点:HBaseの利点を参照してください

欠点:HBaseの欠点を参照してください。 また、実装ではlucene用語は行として格納されますが、各用語に対応する投稿リストは列として保存されています。 1つの用語の投稿リスト数が増えるにつれて、クエリの速度は大きく影響します


ハイパーリンクのログインが見えます。

7: Xunsearch

注:Xunsearchは構造化された階層設計を採用しており、バックエンドサービスとフロントエンド開発パッケージを含み、明確な階層構造と交差点を持たない設計を採用しています。 バックエンドはC/C++で書かれたデーモンで、フロントエンドはPHPを使用しており、ウェブ検索プロジェクトにより便利です。 詳細は建築デザインを参照してください。

ハイパーリンクのログインが見えます。






先の:EOSブロックチェーンPHP開発キット
次に:Centos 7インストールJava JDKチュートリアル
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com