2017-07-13 3 views
0

親子関係のelasticsearch文書を調べているうちに、私はこの行を見つけましたが、それについてはわかりません。弾性検索親子関係のスケーリング

親ドキュメントとそのすべての子は同じシャード上に存在する必要があります。

使用事例:

  • 私は2つのタイプ 会社[親]と従業員との親子関係にElasticsearchインデックスを持っている[子]
  • インデックスを作成するレコードがにありますこれらのパターン1の親は100以上の子を有する。
  • インデックスのボリュームはそれほど我々は、複数のシステム間でシャーディングされているので、同じシャードに存在するように、複数のシステム間での親と子の両方の文を1として

それらをシャードする必要が大きいのは、チャンスがありますその親と子は異なるシャードに住むかもしれない。

もしそうなら、それらを避けるには?そうでないなら説明してください?

答えて

1

すべてのドキュメントでは、一部のシャードを指すフィールド_routingを使用しています。ルーティングhereの詳細については、こちらをご覧ください。

_routingに使用されるデフォルト値は、ドキュメントの_idまたはドキュメントの_parent ID(存在する場合)です。

デフォルトでは、すべての子ドキュメントは親ドキュメントとともに同じシャード上にあることを意味します。
あなたのケースはかなりシンプルなので、デフォルトを使用すると、親と子が異なるシャードに存在する可能性はありません。

しかし、relationがgrand-parentまたはさらに複雑な場合は、ルーティングを手動で設定する必要があります。詳細here

+0

ありがとうございました。現在のところ、親子関係のみに限定されているので、デフォルトは機能します。 – The6thSense