大量のデータをインデックス化し、リアルタイムで提供するための新しいプロジェクトがあります。また、ファセット、フルテキスト、地理空間を使用した複雑な検索もしています...
最初のプロトタイプはMongoDBでインデックスを作成し、次にElasticsearchにインデックスを作成することです。Elasticsearchは保存されたファイルにチェックサムを適用せず、インデックスは完全に信頼できないと読んだためです。しかし、最後のバージョン(バージョン1.5)以降、チェックサムがあり、Elasticsearchをプライマリデータストアとして使用できるかどうかを推測していますか?また、Elasticsearchに加えてMongoDBを使用する利点は何ですか?
Elasticsearchのそれらの機能に関する最新の答えが見つかりません
どうもありがとう
ESの代わりに、または一緒にMongoを使用するための引数について話す:
ユーザー/ロール管理。
shield
です。ただし、本番用のGold/Platinumサブスクリプションに対してのみ出荷されます。スキーマ
Lucene
の上に構築され、Java
で記述されています。このツールの核となるアイデア-ドキュメントのインデックス作成と検索、およびこの方法での作業にはインデックスの一貫性が必要です。バックエンドでは、すべてのドキュメントをフラットlucene
インデックスに収める必要があります。これには、ネストされたドキュメントと値をESがどのように処理するか、速度とデータの完全性のバランスを保つためにインデックスを整理する方法についてある程度の理解が必要です/一貫性。 ESを使用するには、スキーマに関するいくつかのことを常に念頭に置く必要があります。すなわち、対応するマッピングを事前に設定することなく、ほとんどすべてをESにインデックス付けできるため、ESはその場でマッピングを「推測」できますが、間違ったマッピングをしたり、暗黙のマッピングが悪かったりすることがあります。/oインデックス全体の再インデックス付け。そのため、ESをスキーマレスストアとして扱わない方がよいでしょう。これは、レーキをしばらく踏むことができるためです(これはpain:))が、少なくともドキュメントを操作するときは、具体的なフィールドにスライスできるスキーマ集約型として扱います。テーブルのようなデータの処理。
gridFS
をサポートします。これにより、同じインターフェイスの背後にある大量のデータを処理できます。つまり、コードの観点から、Mongoにバイナリデータを保存して、同じインターフェイス内で取得できます。さて、適切な仕事に適切なツールを選択してください。全文検索やファセットなどの検索機能が必要な場合、本格的な検索エンジンに勝るものはありません。 ElasticSearch(ES)またはSolrは選択の問題です。
実際にESにドキュメントをフィード(インデックス)して検索し、MongoDBまたは他のデータベースから特定のエントリの完全な詳細を取得できます。
あなたのタスクを簡単にすることができます。MongoDB、ES、Redis、RabbitMQを使用するオープンソースの作品をご覧ください。これらはすべて1か所に統合されています ここgithub
アプリケーションは.Net C#で構築されていることに注意してください。
会社で最近機能を開発しましたが、
いくつかの検索を実行し、複数の要因と条件の関連性に従って結果をランク付けしたかったのです。
そのため、私のアプリケーションでは、すでにMongoDBをDbとして使用していましたが、
そのため、ElasticSearchインデックスで、検索とフィルターを実行するフィールドのいくつかをMongoDBからエクスポートしました。必要な条件に応じて、mongoクエリとelasticsearchクエリも準備し、検索を実行しました。次に、必要に応じて結果をフィルタリングおよびソートしました。フロー全体は、ESからエラーが発生した場合でも、mongoがレコードを取得するように設計されています。 ESから結果を取得した場合、mongoの結果はESの結果に依存します。これが、mongoとESを組み合わせて使用した方法です。
また、すべての更新、削除、および新しいレコードの挿入を適切に処理することを忘れないでください。
そして、知っておくと、私にとっての結果は本当に良いものでした。
本番環境でElasticsearchを使用した後、このスレッドにいくつかのメモを追加できます:
実際の質問について:
私の考えでは、Elasticsearchのみを使用するだけで十分であり、複数のNoSQLストレージシステムを使用する複雑さを軽減できます。
デュオのリレーショナルデータベースとトランザクションデータベース+ NoSQL検索エンジンを使用している場合に価値があると思いますが、ほぼ同じ目的を果たす2つのシステムがあるのは少しやり過ぎです