0

アプリケーションの検索リポジトリとしてElasticSearchforを使用します。オブジェクトが相互に関連付け/関係を持っている場合に、検索インデックスでオブジェクトを整理する場合のベストプラクティスについていくつか質問があります。

私が知っていることから、検索インデックスはフラットな構造であり、データベースと同じようにリレーションの概念では機能しません。

次のドメインオブジェクトがあるとします。

人:-と1対多の関係にあります

車:-一人のが所有し、と多対一

部門:-各部門には多くのがいて、各人は多対多の多くの部門に属している可能性があります

これを検索インデックスに保存するための最良の方法は何でしょうか?オプションは何ですか?たとえば、特定の部門に属するすべての人、または車のbhpが300bhpを超えるすべての人を検索したいと思います。重要な場合は、JavaクライアントAPIを使用しています。

4

1 に答える 1

1

Elastic Search(またはLucene)はリレーショナルデータベースではないため、リレーションシップモデルをフラット化する必要があります。

この構造を取得するビューをモデル化してみてください-

Car|Person|Department

これにより、車を検索するために必要なすべての属性が得られます。これは、のドキュメントにインポートできますCar

同様に

Person|Department

人のためのすべての情報を提供します。これは、検索に役立ちますPerson

Department3番目のドキュメントにすることができます。

エンティティごとに複数のドキュメントを作成できます。ただし、関係はエンティティのプロパティとして変換する必要があります。

于 2013-03-26T13:44:03.303 に答える