2

何千もの異なるインデックスを持つのは悪い考えではないかと思いますか?

ElasticSearchに基づいてWebアプリに検索ページを追加しています。検索ページを使用すると、ユーザーは、さまざまなインデックス付きの条件(名前、場所、性別など)でフィルタリングすることにより、サイト上の他のユーザーを検索できます。これはかなり簡単で、サイトのすべてのユーザーのドキュメントを含む1つのインデックスのみが必要になります。

ただし、ユーザーがフォローしている他のすべてのユーザーのリストを表示できるページも作成したいと思います。このページに、検索ページで使用できるのと同じフィルタリングオプションを設定したいと思います。これを実行するための良い方法は、フォローしているユーザーごとにドキュメントを含む、ユーザーごとに個別のインデックスを作成することでしょうか?

4

2 に答える 2

5

小さなクラスター(1つまたは2つのノード)に数千のインデックスを作成すると、いくつかの欠点が生じる可能性があるというIgorの回答に追加したいと思います。インデックスの各シャードは完全なLuceneインスタンスです。とは言うものの、単一のノード(またはノードに関しては小さなクラスター)がある場合は、開いているファイルが多くなります(おそらく開いているファイルが多すぎます)。

これが、あまり多くのインデックスを定義しない主な理由の1つです...

インストールガイドのファイル記述子も参照してください。

于 2012-09-26T09:43:27.197 に答える
5

確かにelasticsearchで何千ものインデックスを作成できますが、あなたのユースケースではそれが必要だとは思いません。1つのインデックスを使用できると思います。メイン ユーザー レコードの追加の子タイプ を作成するだけです。user が user をフォローするfollowersたびに、次の内容での子レコードを作成します。現在のユーザーがフォローしているユーザーのリストを取得するには、クエリにHas Child Filterを追加するだけです。ABB{"followed_by" : "A"}

于 2012-09-25T16:37:34.940 に答える