ElasticSearchとMongoDbを併用する理由はありません。ElasticSearchをドキュメントの別のドキュメントストレージとして使用するだけで検索する必要があります。そして、はい、あなたもdb全体としてすることができます。もちろん、ドメインモデルやその他の要因によって異なります。
ステミング、ファジー検索、複雑なワイルドカード検索が不要な場合は、mongoDbで検索できます。新しい文書が挿入されたら、それを小文字の単語に分割し、たとえば「単語」という配列に追加します。後でこの配列に対する検索要求をregex
で実行できます。この正規表現でI
(大文字と小文字を区別しない)オプションを使用することはできません。LIKE%
ワイルドカード(またはワイルドカードなし)のみを検索できます。そうでなければ、mongoDbインデックスは検索されません。
もう一つの選択肢 - あなたはMongoDBの
別のオプションのためriverを見つけることを試みること - あなたは、Javaを使用している場合はLucene
を使用することです。おそらく、Directory
クラスを拡張して、LuceneがファイルシステムやRAMではなくMongoDbにインデックスを格納するようになるでしょう。私はこの分野で研究をしていないが、可能だと思う。
おかげウマル、私たちはあなたのapprocahこれはオプションですが – stew
を試してみるつもりだ、データの重みは正規表現は非効率的な選択肢を検索作るのに十分な大きさである点が存在しています。それは実際に検索インデクサーが存在する理由です。高価な検索操作をデータベースから守るという明示的な目的のために、永続ストレージを補足し、拡張します。 –
正規表現でも、mongodDbはanswerで述べたようにインデックスを使用できますが、正規表現のタイプによって異なります – Anton