Cómo evitar el comportamiento de búsqueda de objetos cruzados con tipos anidados en la búsqueda elástica

Estoy tratando de determinar la mejor manera de indexar un documento en la búsqueda elástica. Tengo un documento, Doc, que tiene algunos campos:

Doc
  created_at
  updated_at
  field_a
  field_b

Pero Doc también tendrá algunos campos específicos para usuarios individuales. Por ejemplo, field_x tendrá un valor 'A' para el usuario 1, y field_x tendrá un valor 'B' para el usuario 2. Para cada documento, habrá un número muy limitado de usuarios (generalmente 2, hasta ~ 10). Cuando un usuario busca en field_x, debe buscar el valor que les pertenece. He estado explorando tipos anidados en ES.

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

Cuando el usuario 1 busca en field_x el valor 'A', este documento debe resultar en un resultado. Sin embargo, no debería hacerlo cuando el usuario 1 busca por el valor 'B'.

Sin embargo,segun los docs:

Uno de los problemas al indexar objetos internos que ocurren varias veces en un documento es que ocurrirá una coincidencia de búsqueda de "objeto cruzado"

¿Hay alguna forma de evitar este comportamiento con tipos anidados o debo explorar otro tipo?

La información adicional sobre el desempeño de tales consultas sería muy valiosa. Solo al leer los documentos, se indicó que las consultas anidadas no son muy diferentes en términos de rendimiento en relación con las consultas regulares. Si alguien tiene experiencia real en esto, me encantaría escucharlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta