8

エラスティック検索でドキュメントをインデックス化する最良の方法を決定しようとしています。いくつかのフィールドを持つドキュメント Doc があります。

Doc
  created_at
  updated_at
  field_a
  field_b

ただし、Doc には、個々のユーザーに固有のフィールドもいくつかあります。たとえば、ユーザー 1 の場合、field_x の値は「A」になり、ユーザー 2 の場合、field_x の値は「B」になります。各ドキュメントのユーザー数は非常に限られています (通常は 2 人、最大 10 人)。ユーザーが field_x を検索するときは、自分に属する値を検索する必要があります。私はESでネストされた型を調査してきました。

Doc
  created_at
  updated_at
  field_x: [{
    user: 1
    field_x: A
  },{
    user: 2
    field_x: B
  }]

ユーザー 1 が field_x で値「A」を検索すると、このドキュメントがヒットするはずです。ただし、ユーザー 1 が値「B」で検索する場合はそうすべきではありません。

ただし、ドキュメントによると

ドキュメント内で複数回発生する内部オブジェクトをインデックス化する際の問題の 1 つは、「クロス オブジェクト」検索一致が発生することです。

ネストされた型でこの動作を回避する方法はありますか、それとも別の型を調べる必要がありますか?

このようなクエリのパフォーマンスに関する追加情報は、非常に価値があります。ドキュメントを読むだけで、ネストされたクエリは、通常のクエリに関連するパフォーマンスの点でそれほど変わらないと述べられています。誰かがこれを実際に経験したことがあるなら、私はそれを聞きたいです。

4

1 に答える 1